Liste déroulante en html

Bonjour,

Je développe actuellement un site surlequel il y'a pas mal de formulaires html. J'utilise des listes déroulantes (<select>...</select>) générées dynamiquement par php comme suit :

function afficherListeDeroulante($table,$identificateur,$valeur,$valeurDefaut="0") {
$requete = "SELECT * FROM $table ORDER BY $valeur";
$resultat = mysql_query ($requete) or die (mysql_error());
$nombre=mysql_num_rows($resultat);
for ($i=0; $i<$nombre; $i++) {
$id=stripslashes(mysql_result($resultat, $i, "$identificateur"));
$val=stripslashes(mysql_result($resultat, $i, "$valeur"));
if ($id==$valeurDefaut) { echo "<option value='$id' selected> $val"; }
else { echo "<option value='$id'> $val"; }
echo "<option value='$id'> $val";
}
}


Mon attribut selected n'a absolument aucun effet.... POurriez vous me dire comment préselectionner une valeur??

Merci bcp!!
Configuration: Mac OS X
Firefox 2.0.0.14

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Je ne vois pas <select> et </select>
    1. Euh oui en fait j'appelle ma fonction ainsi :

      <select>
      <?php afficherListeDeroulante(.......); ?>
      </select>
  2. ferme les option pour voir?
    1. Bonsoir,

      Normal tu "sort" deux fois tes valeurs extraites par mysql_result, pas possible

      for ($i=0; $i<$nombre; $i++) {
      $id=stripslashes(mysql_result($resultat, $i, "$identificateur"));
      $val=stripslashes(mysql_result($resultat, $i, "$valeur"));
      if ($id==$valeurDefaut) { echo "<option value='$id' selected> $val"; }


      Essayes:
      function afficherListeDeroulante($table,$identificateur,$valeur,$valeurDefaut="0") {
      	$requete = "SELECT * FROM $table ORDER BY $valeur";
      	$resultat = mysql_query ($requete) or die (mysql_error());
      	//$nombre=mysql_num_rows($resultat);
      	while($ligne=mysql_fetch_array($resultat)){
      		$id=stripslashes($ligne[$identificateur]);
      		$val=stripslashes($ligne[$valeur]);
      		if ($id==$valeurDefaut) { 
      			echo "<option value='$id' selected> $val</option>"; 
      		}else {
      			echo "<option value='$id'> $val</option>";
      			}
      	}
      } 
  3. C'est quoi le source HTML généré?
    1. echo "<option value='$id' selected> $val</option>";

      etc;

      mais pour être puriste on devrait utiliser le return au lieu des echo
  4. Ca marche parfaitement!! Merci beaucoup! Je ne vois pas d'où vient mon erreur...
    1. Bah j'ai remplacé ma fonction php par :

      function afficherListeDeroulante($table,$identificateur,$valeur,$valeurDefaut="0") {
      $requete = "SELECT * FROM $table ORDER BY $valeur";
      $resultat = mysql_query ($requete) or die (mysql_error());
      //$nombre=mysql_num_rows($resultat);
      while($ligne=mysql_fetch_array($resultat)){
      $id=stripslashes($ligne[$identificateur]);
      $val=stripslashes($ligne[$valeur]);
      if ($id==$valeurDefaut) {
      echo "<option value='$id' selected> $val</option>";
      }else {
      echo "<option value='$id'> $val</option>";
      }
      }
      }

      Voila. Merci encore.