par
Ryle » 10 juil. 2007, 17:16
Déjà il y a une petite erreur ici : name="'tab'[]" les apostrophes sont en trop
Pour le reste, cela devrait être exactement le même principe que pour tes cases à cocher et ce que tu as fait me semble bon.. en revanche tu dois avoir un problème à cause de ta boucle.
En effet, si les 5 select sont identiques, tu vas retrouver les mêmes valeurs possible dans les 5, du coup si un élément a été selectionné, le in_array retournera vrai pour les 5 select, qui selectionneront tous la même valeur.
Contrairement à la case à cocher, la valeur du select (quant il est simple) est toujours envoyée, donc ton tableau $_POST['tab'] contiendra toujours 5 valeurs, même si celle-ci sont vides (ou en l'occurence ici égales à " - Choisissez - ", valeur par défaut)
Tu peux donc pour chaque liste tester la valeur associée $_POST['tab'][0] pour la première, $_POST['tab'][1] pour la seconde ... bref, $_POST['tab'][$i] pour la liste $i
...
while ($data=mysql_fetch_array($resultat)) {
if ($data["nom"] == $_POST['tab'][$i]) {
echo'<option selected="selected"> '.$data["nom"].' </option>';
}
else {
echo' <option>'.$data["nom"].'</option>';
}
}
...
Petit rappel, si l'attribut value de l'option n'est pas spécifié, c'est le libellé qui est utilisé

Déjà il y a une petite erreur ici : name="'tab'[]" les apostrophes sont en trop ;)
Pour le reste, cela devrait être exactement le même principe que pour tes cases à cocher et ce que tu as fait me semble bon.. en revanche tu dois avoir un problème à cause de ta boucle.
En effet, si les 5 select sont identiques, tu vas retrouver les mêmes valeurs possible dans les 5, du coup si un élément a été selectionné, le in_array retournera vrai pour les 5 select, qui selectionneront tous la même valeur.
Contrairement à la case à cocher, la valeur du select (quant il est simple) est toujours envoyée, donc ton tableau $_POST['tab'] contiendra toujours 5 valeurs, même si celle-ci sont vides (ou en l'occurence ici égales à " - Choisissez - ", valeur par défaut)
Tu peux donc pour chaque liste tester la valeur associée $_POST['tab'][0] pour la première, $_POST['tab'][1] pour la seconde ... bref, $_POST['tab'][$i] pour la liste $i :)
[php]...
while ($data=mysql_fetch_array($resultat)) {
if ($data["nom"] == $_POST['tab'][$i]) {
echo'<option selected="selected"> '.$data["nom"].' </option>';
}
else {
echo' <option>'.$data["nom"].'</option>';
}
}
...[/php]
Petit rappel, si l'attribut value de l'option n'est pas spécifié, c'est le libellé qui est utilisé :)