Checkbox en tekstveld data versturen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

12/09/2016 08:20:51
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<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
 
PHP hulp

PHP hulp

07/05/2024 14:16:35
 
Frank Nietbelangrijk

Frank Nietbelangrijk

12/09/2016 08:29:07
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<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">


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST['bestelling'] as $bestelling)
{

    echo $bestelling['menu'] . ': ' . $bestelling['aantal'];
}

?>

?>
 
Donald Boers

Donald Boers

12/09/2016 08:42:54
Quote Anchor link
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.
Gewijzigd op 12/09/2016 10:46:39 door Donald Boers
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/09/2016 17:16:39
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<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">


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST['bestelling'] as $bestelling)
{

    echo $bestelling['menu'] . ': ' . $bestelling['aantal'];
}

?>

Gewijzigd op 21/09/2016 17:21:55 door Frank Nietbelangrijk
 
Donald Boers

Donald Boers

22/09/2016 09:54:14
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$bericht      = new View('partials/bestelling_email.php', compact('items'));


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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<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
Gewijzigd op 22/09/2016 09:54:59 door Donald Boers
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.