Ha allemaal!

Ik ben bezig met het optimaliseren van een prijsberekening. De situatie:

Het gaat om een accomodatie waar je met minimaal 2 nachten en minimaal 25 personen moet overnachten.

Nu haal ik dit uit een config bestand dat er als volgt uit ziet:

<?php
$PPPN=array();

$PPPN[25] = 11.99;
$PPPN[26] = 12.00;
$PPPN[27] = 12.01;
$PPPN[28] = 12.02;
?>

En zo verder. $PPPN is de prijs per persoon per nacht. Hij haalt dus de juiste prijs per persoon per nacht op en vermenigvuldigd dit met het aantal nachten.

Dit is nu gewoon een bestand dat ik een keer per jaar na een prijsverhoging moet aanpassen. Alleen nu willen ze qua website wat meer en moet er een cms-je bij. Hoe kan ik dit het beste doen? Gewoon een tabel aan maken met

aantal | pppn
25 | 11.99
etc...

Of is er een slimmere oplossing? Ik wil graag een goede grondige aanpak.

In de toekomst komt er wellicht een tweede accomodatie bij. Hier worden aparte prijzen gehanteerd.

Wie kan me een goed antwoord geven?
Ik laat je morgen weten hoe het gaat! Ik ben nu toe aan mijn bed!

Slaap lekker allemaal!
@frank

Wat je bedoeld zijn zogenaamde TopLevel key's

na lang zoeken op php.net:



TL = TopLevel key
+TL = key is on top level (i.e. $_GET['myKey'])
-TL = key is nested within another array (i.e. $_GET['myList']['myKey'])



Alleen: weet iemand hoe ik dit in mijn formulier die twee waarden moet aangeven?
in de naam:

name="mylist['myKey']"
Oke, ik heb weer even tijd om aan het script te klussen.

Ik heb nu een array gekregen dmv

<?php
<input type="text" name="prijs['.$row_ptp['aantal'].']" value="'.$row_ptp['pppn'].'" class="inputbox" size="5" maxlength="5">
?>

Als ik kijk wat er gepost wordt:

<?php

if($_SERVER['REQUEST_METHOD'] == "POST"){

echo '<div id="content">';

print_r($_POST['prijs']);

echo '</div>';
}
?>

Is dit de output:

Array ( [25] => 11.99 [26] => 12.00 [27] => 12.01 )


Dit klopt als een bus en is hartstikke mooi. Alleen nu de volgende stap: Hoe update ik de velden in de tabel met die for each.

Ik dacht dat ik dat met dit principe kon doen:

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
echo '<div id="content">';

$a = array ($_POST['prijs']);

foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}

echo '</div>';
}
?>

Ik verwacht nu een lijst met alle POST gegevens alleen ik krijg alleen

$a[0] => Array.

Ik heb geen idee hoe ik dit anders kan oplossen. Iemand anders wel?
<?php
if($_SERVER['REQUEST_METHOD'] == "POST")
{
echo '<div id="content">';
$a = array ($_POST['prijs']);

foreach($a as $k)
{
echo '
<pre>
'.$k.'<br />
</pre>
';
}
echo '</div>';
}
?>
$_POST['prijs'] is al een array, dus daar hoef je nog niet eens extra een array van te maken.

Wat je nu doet is een array $a aanmaken, met als eerste element een array ($_POST['prijs'])

Vandaar dat je krijgt: $a[0] => Array

Oplossing:
<?php
foreach ($_POST['prijs'] as $key => $value) {
echo '<p>' . $key . ': ' . $value . '</p>';
}
?>
Op deze manier krijg ik

Array

als output...

hij ziet dan maar 1 record in de array? Waarom laat hij niet al mijn waarden uit de $_POST['prijs'] zien?
Crispijn schreef op 24.09.2006 11:40
Op deze manier krijg ik...

Op wiens manier?
Jan Koehoorn schreef op 24.09.2006 11:45
[quote=Crispijn schreef op 24.09.2006 11:40]Op deze manier krijg ik...

Op wiens manier?[/quote]
Lijkt mij Erik's manier want die stopt $_POST in een array().
Ik wist het ook allemaal niet meer.
maar nu ik Jan z'n manier zie snap ik het ook weer

Reageren