In een bestelling formulier heb ik 4 checkboxen. De bedoeling is dat mensen via de checkboxen aan kunnen geven welke menu's ze willen bestellen. Daarnaast moeten de mensen middels een tekst veld achter de checkboxen kunnen aangeven hoeveel ze van ieder menu wensen te bestellen. Vervolgens zou het op deze manier geechoed moeten worden:

Menu 1 4
Menu 2 2
Menu 3 4
Menu 4 2

Dit is hoe de structuur in het formulier er uitziet

<input name="menus[]" type="checkbox" value="Menu 1"><input name="aantallen[]" type="text">
<input name="menus[]" type="checkbox" value="Menu 2"><input name="aantallen[]" type="text">
<input name="menus[]" type="checkbox" value="Menu 3"><input name="aantallen[]" type="text">
<input name="menus[]" type="checkbox" value="Menu 4"><input name="aantallen[]" type="text">


Ik heb werkelijk geen idee hoe ik dit het beste kan aanpakken
Het zou handiger zijn als je de name attributen van je formuliervelden iets anders zou indelen waardoor je een direct bruikbare array in je $_POST krijgt.


<input name="bestelling[][menu]" type="checkbox" value="Menu 1"><input name="bestelling[][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 2"><input name="bestelling[][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 3"><input name="bestelling[][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 4"><input name="bestelling[][aantal]" type="text">


<?php
foreach($_POST['bestelling'] as $bestelling)
{
echo $bestelling['menu'] . ': ' . $bestelling['aantal'];
}
?>
?>
Hoi Frank. Hartelijk bedankt voor je reactie en oplossing. Dat zier er heel logisch uit allemaal. Ik ga er meteen mee aan de gang en zal de voorgang delen. Nogmaals bedankt.

Donald, of voor andere mensen die hier nog mee verder willen:

De lege brackets [ ] moeten vervangen worden door brackets met ingevulde nummers omdat het anders niet schijnt te werken.

Hier de aanpaste versie:

<input name="bestelling[][menu]" type="checkbox" value="Menu 1"><input name="bestelling[0][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 2"><input name="bestelling[1][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 3"><input name="bestelling[2][aantal]" type="text">
<input name="bestelling[][menu]" type="checkbox" value="Menu 4"><input name="bestelling[3][aantal]" type="text">


<?php
foreach($_POST['bestelling'] as $bestelling)
{
echo $bestelling['menu'] . ': ' . $bestelling['aantal'];
}
?>
[/code]
Hoi Frank. Hartelijk bedankt voor de update. Dat is trouwens toevallig zeg. Ik wou zojuist reageren dat in een undefined index aantal kreeg toen ik jou reactie zag. Deze oplossing werkt perfect. Heb nog een vraag. In het email bericht aan de klant die besteld heeft wil ik graag de totaal bedragen voor ieder pakket melden plus de totaal prijs van de gehele bestelling Ik dacht dat te doen door in de bovenstaande structuur een verborgen veld toe te voegen:


<input name="bestelling[][prijs]" type="hidden" value="11.00">


Maar heb geen idee hoe ik vanaf daar verder. Dit is wat ik nu heb in de Controller:


$bestelling       = filter_input(INPUT_POST, 'bestelling', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);

$items = array();
foreach ($bestelling as $bestelling)
{
	$items[] = '<li><span>'. $bestelling['menu'] . ':</span>' . $bestelling['aantal'] . '</li>' ;		   	
}


Waarbij ik array items doorstuur naar de View voor het e-mail bericht


$bericht      = new View('partials/bestelling_email.php', compact('items'));


En in bestelling_email.php loop ik vervolgens op de volgende manier over items:


<ul>
<?php foreach ($items as $item): ?>
	<?php echo $item ?>                
<?php endforeach; ?>
</ul>


Maar hoe ik verder moet? Ik heb werkelijk geen idee hoe ik verder moet.

Alvast bedankt

Reageren