Array et input type="checkbox"

Petit nouveau ! | 9 Messages

02 mai 2011, 17:25

Bonjour,

Voici mon problème du jour sur lequel je sèche depuis ce matin.

Sur mon formulaire, j'ai une dizaine de checkox. Je transmet en GET les checkbox cochée sous forme de tableau
<a href= "mapage.php?a_commune[0]=64011&a_commune[1]=64021
et les récupère ainsi
$array_commune= $_GET['a_commune'];
j'ai donc 2 valeurs dans l'exemple ci-dessus
$array_commune[0] => 64011
$array_commune[1] => 64021

Côté formulaire, j'ai donc une liste de checkbox (créé dynamiquement)
<li><label for="chk1">Ville 1</label><input type="checkbox" id="chk1" name="64001" value="Ville 1" onclick="verifchk();" /></li>
<li><label for="chk2">Ville 2</label><input type="checkbox" id="chk2" name="64011" value="Ville 2" onclick="verifchk();" /></li>
<li><label for="chk3">Ville 3</label><input type="checkbox" id="chk3" name="64101" value="Ville 3" onclick="verifchk();" /></li>
<li><label for="chk4">Ville 4</label><input type="checkbox" id="chk4" name="64021" value="Ville 4" onclick="verifchk();" /></li>
je souhaiterais pouvoir indiquer "checked" sur les checkbox sélectionnées, au rechargement de la page.
Comment faire si ce n'est pour chaque ligne vérifier dans le tableau (via une boucle) si il y a concordance ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 mai 2011, 20:50

Plutôt qu'une boucle, tu peux utiliser in_array() qui te dira tout de suite si l'élément que tu es en train d'afficher est présent dans le tableau php que tu récupères en get :)

Par contre ta façon de passer les valeurs de tes cases à cocher dans un lien plutôt qu'en soumettant ton formulaire me semble un peu étrange, mais bon...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 9 Messages

02 mai 2011, 21:49

Super ça fonctionne.
Quand à l'utilisation, c'est pour permettre la gestion d'une pagination d'une liste d'objet avec filtre sur certains éléments. Le tout en ajax.

Vu de l'extérieur ça ne parait pas très "homogène", mais cela fonctionne