Précocher des checkbox en fonction de la BDD ?
Bonjour à tous,
D'un côté, une table "fruits" contenant id1 => pomme, id2 => banane, id3 => mangue...etc...
De l'autre, une table users avec un champ fruits renseigné par un form contenant les id choisis séparés par un espace: 1 3 6 etc...
En mode modif, je souhaite afficher les cases à cocher de tous les fruits (ça, je sais faire), mais que celles qui correspondent au choix de l'user soient checked ...
A force de tâtonnements, voici ce que j'ai fait:
1- je récupère les données du champ fruits de l'user sous forme de tableau
Code:
1 2
|
$fruits = explode(" ", $row["fruits"]); |
2- Affichage des checkbox
Code:
1 2 3 4 5 6 7 8 9 10
|
$sql = mysql_query("SELECT id, nom FROM fruits order by id");//lecture tble fruits
while($res = mysql_fetch_array($sql))
{
for($i=0; $i <count($fruits);$i++)
{
$sel[$i] = ( $fruits[$i] == "$res[id]" ) ? ' checked="checked"' : ' ';
echo "".$res["nom"]."\n\n<input type=\"checkbox\" name=\"fruits[]\" value=\"".$res["id"]."\" ".$sel[$i].">\n | ";
}
} |
Ben ça affiche bien les checkbox cochées...mais comme dans mon exemple, l'user a choisi 3 fruits...ça affiche 3 fois la liste complète à cause de la boucle for (CQFD !)...mais je sais pas faire autrement :oops: