Liste déroulante selected avec une bdd

Eléphant du PHP | 89 Messages

11 juin 2010, 12:26

Bonjour
Je suis entrain de chercher une solution pour ma liste déroulante qui doit prendre une valeur par défaut en fonction du résultat de ma base de donnée.
Ce que je voudrais réaliser c'est par exemple mettre la valeur du champ de ma bdd par défaut sur la liste déroulante.
<select name="allum" type="select">
	        
<option value="<?php echo $row->etat; ?>" <?php echo($row->etat ? " selected=\"selected\"" : NULL); ?>> <?php echo($row->etat ? 'Allumer' : NULL); ?> </option>
<option value="<?php echo ($row->etat ? "1" : NULL ); ?>">Eteindre</option>	        

            
            </select>
J'utilise mysql_fetch_object.
Dans la base de donnée, le champ "etat" vaut 1 par défaut.
moi ce que je veux faire, c'est montrer à l'utilisateur que c'est allumer et également qu'il puisse éteindre avec la liste déroulante.
Je n'arrive pas à avancer pouvez vous m'aider svp?
Merci beaucoup

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

12 juin 2010, 21:45

Il te faut lister toutes tes options et ajouter l'attribut selected dans l'option à pré-sélectionner :
<select name="allum">
  <option value="1" <?php echo ($row->etat == 1) ? 'selected="selected"' : ''); ?>> Allumé </option>
  <option value="0" <?php echo ($row->etat == 0) ? 'selected="selected"' : ''); ?>> Eteint </option>
</select>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 89 Messages

19 juin 2010, 13:12

Effectivement ca marche,
J'avais utilisé la même méthode sauf que j'ai fait comme ceci:
	        
<option value="1" 
<?php if($row->etat == '1'){ echo 'selected = "selected"';} ?>> 
<?php if($row->etat == '1'){ echo 'Allumer';}  else { echo 'Allumer';} ?> </option>
 
<option value="0"
<?php if($row->etat == '0'){ echo 'selected = "selected"';} ?>>
<?php if($row->etat == '0'){ echo 'Eteindre';} else { echo 'Eteindre';} ?> </option>          
            </select>
Votre méthode est plus courte, et c'est mieux ^^
Merci en tout cas
Cordialement