Inleiding: Met PHP en een MySQL-database produceer ik een lijst met namen met een bijbehorende checkbox. De bezoekers van de pagina mogen uit die lijst 5 kiezen dmv de checkbox. Na het klikken van de submit-button wordt met een javascriptje gecontroleerd of het er ook 5 zijn, als het er geen 5 zijn komt er een waarschuwing en blijft de pagina staan. Als het er 5 zijn dan wordt dmv van een post de 5 waardes aan volgende.php gegeven die deze verwerkt.
De HTML-pagina (Gestript van niet terzake doende PHP & HTML code)
Het javascript
Stukje uit volgende.php
Probleem: Volgende.php ontvangt maar een (1) waarde, terwijl ik gelezen heb (ik dacht hier op GoT) dat als je meerdere objecten dezelfde naam geeft, dan wordt het beschouwt als een array en zou de hele array in een keer over moeten komen.
Nu heb ik wel een oplossing gevonden om meerdere waardes over te zenden, namelijk door achter optie [] te zetten, hiermee geef je aan dat het een array is en komt het ook zo over. Echter dan werkt het javascript niet meer en ondanks alle pogingen krijg ik dat script niet op een andere manier werkend.
Ik zou ook alle checkboxen van een unieke naam kunnen voorzien, maar het nadeel hiervan is dat in volgende.php alle namen moet afgaan of deze in de post zitten. En als de uiteindelijke lijst uit ruim 200 items bestaat, waarvan er maar 5 in de post zitten is dit geen efficiente operatie en in mijn opinie een lelijke vorm van programmeren.
Ook de variable declareren in volgende.php als array ($keuze[] = array();) geeft niet het gewenste resultaat.
Ik ben van mening dat de post niet goed gaat en dat ik (samen met jullie) daar als eerste moeten kijken voor een oplossing en als dat niet mogelijk is dan kijken of het script aangepast kan worden. Vandaar dat ik hem ook in dit gedeelte van het forum plaats.
For the record: GoT-search and Google are used...
De HTML-pagina (Gestript van niet terzake doende PHP & HTML code)
code:
1
2
3
4
5
6
7
| <form method="post" action="volgende.php" onsubmit="return checkbox_checker()" name="checkbox_form"> <input type="checkbox" value="1" name="optie"> <input type="checkbox" value="2" name="optie"> <input type="checkbox" value="3" name="optie"> <input type="submit" value="Submit"> </form> |
Het javascript
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <script type="text/javascript">
function checkbox_checker()
{
var checkbox_choices = 0;
var max = 5;
for (counter = 0; counter < checkbox_form.optie.length; counter++)
{
if (checkbox_form.optie[counter].checked)
checkbox_choices++;
}
if (checkbox_choices > max )
{
msg="Je hebt " + checkbox_choices + " keuzes gemaakt.\n"
msg=msg + "Verwijder " + (checkbox_choices-max) + " keuzes!"
alert(msg)
return (false);
}
else if (checkbox_choices < max )
{
alert("Maak " + max + " keuzes. \n Je hebt er " + checkbox_choices + " gemaakt.")
return (false);
}
if (checkbox_choices == max )
return (true);
}
</script> |
Stukje uit volgende.php
code:
1
2
3
| $keuze; for($i=0; $i<sizeof($_POST['optie']); $i++) $keuze[$i] = $_POST['optie'][$i]; |
Probleem: Volgende.php ontvangt maar een (1) waarde, terwijl ik gelezen heb (ik dacht hier op GoT) dat als je meerdere objecten dezelfde naam geeft, dan wordt het beschouwt als een array en zou de hele array in een keer over moeten komen.
Nu heb ik wel een oplossing gevonden om meerdere waardes over te zenden, namelijk door achter optie [] te zetten, hiermee geef je aan dat het een array is en komt het ook zo over. Echter dan werkt het javascript niet meer en ondanks alle pogingen krijg ik dat script niet op een andere manier werkend.
Ik zou ook alle checkboxen van een unieke naam kunnen voorzien, maar het nadeel hiervan is dat in volgende.php alle namen moet afgaan of deze in de post zitten. En als de uiteindelijke lijst uit ruim 200 items bestaat, waarvan er maar 5 in de post zitten is dit geen efficiente operatie en in mijn opinie een lelijke vorm van programmeren.
Ook de variable declareren in volgende.php als array ($keuze[] = array();) geeft niet het gewenste resultaat.
Ik ben van mening dat de post niet goed gaat en dat ik (samen met jullie) daar als eerste moeten kijken voor een oplossing en als dat niet mogelijk is dan kijken of het script aangepast kan worden. Vandaar dat ik hem ook in dit gedeelte van het forum plaats.
For the record: GoT-search and Google are used...
There are never enough hours in a day, but always too many days before saturday.