Pré-positionner une liste déroulante

arnovs72
Invité n'ayant pas de compte PHPfrance

31 janv. 2010, 15:08

Bonjour a tous,

Ca ne fait que quelques semaines que j'apprends le html et php.
Grace aux différents forums comme celui ci , mon petit site prend forme doucement. Mais ca fait une semaine que je bloque sur le même pb, celui de pré-selectionner une valeur dans une liste dynamique.
J'ai trouvé sur ce site la maniere de proceder mais n'arrive pas à l'integrer à mon code et plus ca va plus je m'embrouille.
J'ai donc dédidé de vous demander un coup de main et vous en remercie d'avance.J'ai deux tables, une table user avec un champ id_user et un champ id_agence et une autre table agence avec un champ id_agence et un autre nom_agence
Pour faire simple, ma liste déroulante est alimentée par la table agence , et j'ai besoin qu'elle se positionne automatiquement sur la valeur du champ id_agence de la table user.

Dans la page de mon formulaire de modification, je recupere la valeur id_agence issue de ma table user sous la variable que j'ai nommée $id_agence_user

Je construis ma liste de cette manière :

Code : Tout sélectionner

<?php mysql_connect("localhost", "root", "") or die( "Connexion impossible."); mysql_select_db("si") or die( "Accès base impossible."); $result = mysql_query("SELECT * FROM agence"); $ld = "<SELECT NAME='nom_agence'>"; $ld .= "<OPTION VALUE=0></OPTION>"; // On boucle sur la table while ( $row = mysql_fetch_array($result)) { $id_agence = $row["id_agence"]; $agence = $row["nom_agence"]; $ld .= "<OPTION VALUE='$id_agence'>$agence</OPTION>"; } $ld .= "</SELECT>"; print $ld; ?>
D'après ce que j'ai compris , c' est l' option selected qui permet de selectioner une valeur de ma liste , il faut également que j'utilise une boucle qui ira tester si la $id_agence est égale à $id_agence_user et dans ce cas la selectionner .
Mais je ne comprend pas ou et comment construire cette boucle de test.
Voici l' exemple de code trouvé sur ce forum :

Code : Tout sélectionner

<select name="age"> <?php $valeurChoisie = 20; for ($i=7; $i<=77; $i++) { if ($i == $valeurChoisie) { echo '<option value="'.$i.'" selected="selected">'.$i.'</option>'; } else { echo '<option value="'.$i.'">'.$i.'</option>'; } } ?> </select>
Si vous avez la moindre idée, je suis preneur car là je bloque completement et surtout je m'embrouille....
Mercid'avance pour l'aide que vous pourrez m'apporter.
Bonne journée
Arnaud

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

31 janv. 2010, 15:32

Le principe est bon, il te faut simplement le mettre en place :)
   $ld = "<SELECT NAME='nom_agence'>";
   $ld .= "<OPTION VALUE=0></OPTION>";
      // On boucle sur la table
      while ( $row = mysql_fetch_array($result)) 
         {
         $id_agence = $row["id_agence"];
         $agence = $row["nom_agence"];
         if ($id_agence == $id_agence_du_user_courrant) {
                  $ld .= "<OPTION VALUE='$id_agence' SELECTED>$agence</OPTION>";
         else
                  $ld .= "<OPTION VALUE='$id_agence'>$agence</OPTION>";
         }
   $ld .= "</SELECT>";   
Tu peux ainsi sélectionner l'agence de l'utilisateur en remplaçant ma variable $id_agence_du_user_courrant par la variable qui va bien et qui contient cette information :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...