[PHP] Checkboxes checked?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hey,

Ik heb onderstaande code om bestanden te selecteren binnen een formulier:

code:
1
2
3
<?
echo '<input type="checkbox" name="bestanden[]" value="'.$bestand['id'].'" />';
?>


Nu wil ik, wanneer onjuiste informatie is ingevoerd in het formulier, dat de checkboxes worden gecontroleerd of ze aangevinkt waren, zodat na het submitten de bestanden "gechecht" blijven.

Nu dacht ik het met onderstaande code op te lossen, maar dat werkt niet:

code:
1
2
3
4
5
6
7
8
9
10
11
<?
if($_SERVER['REQUEST_METHOD']=='POST') {
foreach($_POST['bestanden'] AS $nummer) {
$checked[$nummer] = "checked=\"checked\"";
}
}

while(....................................) {
echo '<input type="checkbox" name="bestanden[]" value="'.$bestand['id'].'" '.$checked[$bestand['id']].' /><br />';
}
?>


Weet iemand hoe ik dit kan oplossen?

Ps: ik weet dat de submit button in bovenstaand voorbeeld niet aanwezig is, maar daar gaat het ook niet om....

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Een niet aangevinkt checkboxje word niet meegestuurd, en zal je dus niet terug kunnen vinden in $_POST. met een simpele isSet() kan je dus controleren of het vakje was aangevinkt.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

Verwijderd

radem205 schreef op vrijdag 04 mei 2007 @ 15:48:
code:
1
2
3
<?
echo '<input type="checkbox" name="bestanden[]" value="'.$bestand['id'].'" />';
?>


code:
1
2
3
4
5
6
7
8
9
10
11
<?
if($_SERVER['REQUEST_METHOD']=='POST') {
foreach($_POST['bestanden'] AS $nummer) {
$checked[$nummer] = "checked=\"checked\"";
}
}

while(....................................) {
echo '<input type="checkbox" name="bestanden[]" value="'.$bestand['id'].'" '.$checked[$bestand['id']].' /><br />';
}
?>
Je checkbox heeft als name "bestanden[]", terwijl je in je php de post var 'bestanden' probeert op te halen, denk niet dat dat werkt.

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
AtleX schreef op vrijdag 04 mei 2007 @ 15:49:
Een niet aangevinkt checkboxje word niet meegestuurd, en zal je dus niet terug kunnen vinden in $_POST. met een simpele isSet() kan je dus controleren of het vakje was aangevinkt.
foreach neemt ook alleen de aangevinkte variabelen mee in de loop, maar hoe krijg ik de checked="checked" bij de goede checkboxes?
Verwijderd schreef op vrijdag 04 mei 2007 @ 15:52:
[...]


Je checkbox heeft als name "bestanden[]", terwijl je in je php de post var 'bestanden' probeert op te halen, denk niet dat dat werkt.
Dat werkt wel, wanneer ik $nummer echoot, dan krijg ik netjes de id's welke gecheckt zijn.

[ Voor 27% gewijzigd door radem205 op 04-05-2007 15:54 ]


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
in je $_POST["bestanden"] staan de id's van de bestanden die je aangevinkt hebt (de values van de aangevinkte checkboxen)... dus in_array($_POST["bestanden"])?"checked":""

Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

erm... moet de html tag
code:
1
$checked[$nummer] = "checked=\"checked\"";

niet gewoon
code:
1
$checked[$nummer] = 'checked';

zijn?

ok, dus niet :)

[ Voor 40% gewijzigd door Tjark op 04-05-2007 16:05 ]

*insert signature here


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Tjark Verhoeven schreef op vrijdag 04 mei 2007 @ 16:03:
erm... moet de html tag
code:
1
$checked[$nummer] = "checked=\"checked\"";

niet gewoon
code:
1
$checked[$nummer] = 'checked';

zijn?
Nee, checked="checked" is de XHTML strict methode.
Edwardvb schreef op vrijdag 04 mei 2007 @ 15:58:
in je $_POST["bestanden"] staan de id's van de bestanden die je aangevinkt hebt (de values van de aangevinkte checkboxen)... dus in_array($_POST["bestanden"])?"checked":""
Deze snap ik niet helemaal. Hoe moet ik dan de juiste checkboxes de checked="checked" meegeven?


Edit: Als ik de code uit mijn eerste post uitvoer dan krijg ik bij alle checkboxes die gecheckt zijn, de eerste letter van checked="checked" te zien, dus:

<input type="checkbox" name="bestanden[]" value="38" c />

Dus het begin is er, maar hoe kan het nou dat ie alleen de eerste letter echoot .

[ Voor 53% gewijzigd door radem205 op 04-05-2007 16:15 ]


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
als je weet welke ids gechecked zijn, dan lijkt het mij dat er talrijke mogelijkheden zijn om de juiste checkboxen opnieuw te selecteren... ik snap het probleem geloof ik niet zo...

maar goed, voorgekauwd dan maar...

PHP:
1
echo '<input type="checkbox" name="bestanden[]" value="'.$bestand['id'].'" '. in_array($bestand['id'], $_POST['bestanden'])?'checked':'' .' /><br />';

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

radem205 schreef op vrijdag 04 mei 2007 @ 15:53:
foreach neemt ook alleen de aangevinkte variabelen mee in de loop, maar hoe krijg ik de checked="checked" bij de goede checkboxes?
Je zal je checkboxen zelf moeten nummeren. Dus niet overal bestanden[] als naam, maar gewoon bestanden[1], bestanden[2], enz. Je kan dan kijken welke indexen wel of niet bestaan en op basis daarvan de juiste checkboxen aanvinken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Als ik naar je initiele code kijk dan zou deze gewoon moeten werken. Het feti dat er alleen een c terecht komt in je resultaat doet mij vermoeden dat er op de plek van de puntjes nog wat meer gebeurt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
Janoz schreef op vrijdag 04 mei 2007 @ 16:35:
Als ik naar je initiele code kijk dan zou deze gewoon moeten werken. Het feti dat er alleen een c terecht komt in je resultaat doet mij vermoeden dat er op de plek van de puntjes nog wat meer gebeurt.
nou je het zegt... duidelijk vrijdagmiddag merk ik... had het nog niet gezien :)

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Het is opgelost!!! Het probleem was dat $checked waarschijnlijk al een geregistreerd PHP variabele is ofzoiets :s. Dus de code klopte wel.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

radem205 schreef op vrijdag 04 mei 2007 @ 16:57:
Het is opgelost!!! Het probleem was dat $checked waarschijnlijk al een geregistreerd PHP variabele is ofzoiets :s. Dus de code klopte wel.
Je hebt toch niet register_globals uit aan staan he?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
-NMe- schreef op vrijdag 04 mei 2007 @ 17:02:
[...]

Je hebt toch niet register_globals uit staan he?
Je bedoelT 'Je hebt toch niet register_globals aan staan he?' ? ;)

Aan de TS : die register_globals shit wil je uit hebben namelijk

edit: typo :P

[ Voor 16% gewijzigd door Cartman! op 04-05-2007 17:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op vrijdag 04 mei 2007 @ 17:02:
[...]

Je hebt toch niet register_globals uit staan he?
best als deze uit staat....

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Cartman! schreef op vrijdag 04 mei 2007 @ 17:07:
[...]

Je bedoeld 'Je hebt toch niet register_globals aan staan he?' ? ;)
Uiteraard. :P :$

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Wat gebeurt er dan als ie aan staat?
Pagina: 1