Checkboxen in een array
Harry
08/03/2006 14:05:00Naar aanleiding van een script hier:
In een lijst maak ik achter een vraag een rij checkboxen onder elkaar met antwoorden. Hier kunnen meerdere worden aangevinkt.
$AntwoordenAantal = count($Antwoorden);
for($i = 0; $i < $AntwoordenAantal; $i++)
{
echo ("<tr><td></td><td><input type='checkbox' name='Waarde[$id][$i]'"); if($Waarde[$id][$i]) { echo(" checked"); } echo("> ".$Antwoorden[$i]."</td></tr>");
}
Dit gaat goed, wanneer het formulier na een controle terugkomt zijn de aangevinkte antwoorden weer netjes aangevinkt.
Maar... wanneer ik de antwoorden in een string wil opslaan worden alle antwoorden in de string gezet en dat is natuurlijk nou net niet de bedoeling. Alleen de aangevinkte moeten herkent en verwerkt worden.
for($i = 0; $i < $AntwoordenAantal; $i++)
{
if(!$strdata)
{
$strdata = isset($Waarde[$id][$i]) ? "$Antwoorden[$i]" : "";
}
else
{
$strdata .= isset($Waarde[$id][$i]) ? "|$Antwoorden[$i]" : "";
}
}
Wat ik niet begrijp of over het hoofd zie is dat bij het formulier de waardes wel onthouden/terugkomen maar bij de verwerking wordt alles meegenomen.
---
Hier ben ik bijna bij een oplossing:
Op een andere manier wordt de verwerking wel goed gedaan maar worden alle checkboxen steeds aangevinkt i.p.v. de zelf aangevinkte.
echo ("<tr><td></td><td><input type='checkbox' name='".$id."box".$i."'"); if($id."box".$i) { echo(" checked"); } echo("> ".$Antwoorden[$i]."</td></tr>");
Er is dus iets mis met de if() formulering, maar wat?
Wie weet raad?
Harry
In een lijst maak ik achter een vraag een rij checkboxen onder elkaar met antwoorden. Hier kunnen meerdere worden aangevinkt.
$AntwoordenAantal = count($Antwoorden);
for($i = 0; $i < $AntwoordenAantal; $i++)
{
echo ("<tr><td></td><td><input type='checkbox' name='Waarde[$id][$i]'"); if($Waarde[$id][$i]) { echo(" checked"); } echo("> ".$Antwoorden[$i]."</td></tr>");
}
Dit gaat goed, wanneer het formulier na een controle terugkomt zijn de aangevinkte antwoorden weer netjes aangevinkt.
Maar... wanneer ik de antwoorden in een string wil opslaan worden alle antwoorden in de string gezet en dat is natuurlijk nou net niet de bedoeling. Alleen de aangevinkte moeten herkent en verwerkt worden.
for($i = 0; $i < $AntwoordenAantal; $i++)
{
if(!$strdata)
{
$strdata = isset($Waarde[$id][$i]) ? "$Antwoorden[$i]" : "";
}
else
{
$strdata .= isset($Waarde[$id][$i]) ? "|$Antwoorden[$i]" : "";
}
}
Wat ik niet begrijp of over het hoofd zie is dat bij het formulier de waardes wel onthouden/terugkomen maar bij de verwerking wordt alles meegenomen.
---
Hier ben ik bijna bij een oplossing:
Op een andere manier wordt de verwerking wel goed gedaan maar worden alle checkboxen steeds aangevinkt i.p.v. de zelf aangevinkte.
echo ("<tr><td></td><td><input type='checkbox' name='".$id."box".$i."'"); if($id."box".$i) { echo(" checked"); } echo("> ".$Antwoorden[$i]."</td></tr>");
Er is dus iets mis met de if() formulering, maar wat?
Wie weet raad?
Harry
Gewijzigd op 08/03/2006 14:06:00 door Harry
Er zijn nog geen reacties op dit bericht.