Meerdere checkboxen checked gebaseerd op url parameters
Door
Stephan Kamstra
op 21-07-2016 10:29
gewijzigd op 21-07-2016 14:06
2.038 views
Ik heb een lijst met checkboxen in een formulier, welke gegenereerd worden uit de database, en dat werkt.
Wanneer ik op zoeken klik in het formulier, dan worden alle checkboxen die ik aangevinkt had, als parameter in de url geplaatst.
De pagina ververst en plotseling zijn alle checkbox aangevinkt, zelfs degene die ik niet had aangevinkt.
- hoe ziet de uiteindelijke HTML voor de checkboxen er uit?
- hoe ziet de URL er uit?
- de checkboxen hebben in ieder geval geen name-attribuut noch array-haken die aangeven dat het gelijknamige/gelijksoortige checkboxen betreft...
- tijdens het genereren van de HTML (tweede foreach loop) is $checked mogelijk altijd gelijk aan ' checked="checked"' dus in dat opzicht is het niet zo verwonderlijk dat alles is aangevinkt... als er ten minste één checkbox aangevinkt was verandert $checked permanent naar deze waarde
Als je deze drie foreach-loops nu eens combineert tot één loop?
NB: wat doet de functie upme_stripslashes_deep()? Dit klinkt nogal dodgy...
NB #2: de functie custom_check_box is alles behalve generiek omdat deze een hardcoded $_GET parameter bevat; als je deze nu eens als argument aan de functie meegeeft, en ook de waarden die geselecteerd zouden moeten zijn voert aan de functie, dan kun je buiten deze functie/methode nog besluiten wat voor methode (GET, POST) je gebruikt of dat deze informatie (welke checkboxen geselecteerd zijn) mogelijk uit een database komt ofzo.
[size=xsmall]Toevoeging op 21/07/2016 13:40:46:[/size]
want wat als je alleen de derde checkbox aanvinkt? Zijn dan de eerste 2 open?
[size=xsmall]Toevoeging op 21/07/2016 13:53:25:[/size]
je code is wat onleesbaar, zo zonder opmaak, maar het lijkt erop dat je eerst alle checkboxen doorloopt om te kijken of er gecheckt moet worden
en daarna nog een keer om ze op het scherm te zetten. Dat loopt fout, omdat je dan niet per checkbox onthouden hebt of dié checkbox gevinkt moet worden.