valeur par défaut dans menu déroulant

zion75
Invité n'ayant pas de compte PHPfrance

28 févr. 2011, 16:30

Bonjour jme pose une grande question existentielle.
J'ai un formulaire reliés à une superbe base de données. Il y a des valeurs dans ma table et il existe une page pour modifier les valeurs de cette table. Je peux choisir une nouvelle valeur grace à un menu déroulant.J'aimerais que ce menu déroulant prenne par défaut sa valeur dans la base de données.

Exemple: Dans ma base, j'ai une table temps avec avec 4 valeurs >>soleil , pluie , brouillard, soleil.
L'utilisateur choisit l'id correspondant à la ligne qu il veut modifier.
Il arrive sur une page servant à modifier les valeurs de la table grace a un formulaire.

Donc par exemple ici, dans mon exemple, si dans la table il y avait

id // temps
1 // soleil
2 // pluie
3 // soleil

Il va sur une page pour par exemple, modifier la ligne id=2 , le menu déroulant lui propose les 4 valeurs mais je voudrai que le menu déroulant soit réglé par défaut sur PLUIE ( pr l id2) ..
while ($row = mysql_fetch_object($query)) { ?>
		<option value="<?php echo $row->nom ';?>"><?php echo $row->nom ; ?></option>  
J'ai essayé avec selected mais bon ca marche pas ou alors je le fais mal.
Merci de l'aide que vous pourrez m'apporter, j espere avoir été clair mais j'en doute.

ViPHP
ViPHP | 2291 Messages

28 févr. 2011, 19:46

Salut
Comme ceci probablement
<select name="temps">
	<option selected="selected" value="Pluie">Pluie</option>
	<option value="Soleil">Soleil</option>
	</select>
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

zion75
Invité n'ayant pas de compte PHPfrance

28 févr. 2011, 21:04

ben en fait la valeur par defaut dans le menu déroulant doit correspondre a celle dans la bdd.
dans mon exemple si l utilisateur choisit de modifier la ligne 1 ( id= 1) la valeur par défaut sera soleil
si il choisi plutot de modifier la ligne 2 ( id=2) la valeur par défaut devra être pluie
si il choisi plutot de modifier la ligne 3 ( id=3) la valeur par défaut devra être soleil

La valeur par défaut varie selon l'id. Il faut que j arrive a faire comprendre au programme que je dois récupérer la valeur qui est dans la BDD pour une ligne donné et la mettre en valeur par défaut dans le menu déroulant..
Ca se trouve c pas vraiment faisable je c pas trop .

En suivant ton bout de code ca voudrait dire que je choisi moi meme une valeur par défaut. Or cette valeur par défaut devrait changer selon ce qu il y a dans la BDD.

zion75
Invité n'ayant pas de compte PHPfrance

28 févr. 2011, 21:09

quand je dis, " si on choisit de modifier la ligne 2 ect..." en fait si on choisit de modifier la ligne qui correspont a l id = 2 , le formulaire qui s ouvre ne concerne que cette ligne . Tout le formulaire sert a mettre a jour par une interface graphique une seule ligne.
et dc sur la page qui sert a modifier la ligne 1 ( celle ou l id=1) c est dans cette page que je veux que la valeur par défaut soit soleil.
Pour la page qui sert a modifier la ligne de l id 2, dans le menu déroulant cette valeur par défaut devrait etre pluie . ect..

J espere avoir été plus claire

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

28 févr. 2011, 23:52

En fait, il te faut faire apparaître le selected dans l'option qui doit être affichée par défaut. Donc dans ta boucle while qui génère les options, il te faut tester si l'option que tu es en train d'afficher est celle à afficher par défaut, et dans ce cas ajouter le selected :)

grosso modo :
$valeurParDefaut = .... // récupérée de ta bdd

while ($row = mysql_fetch_object($query)) { 
   if ($row->nom == $valeurParDefaut)
                echo '<option selected="selected">'. $row->nom .'</option>'; 
   else
                echo '<option>'. $row->nom .'</option>';
}
Ps : si la value de ton option a la même valeur que le libellé, l'attribut value est facultatif, c'est pour ça que je l'ai viré ici (et accessoirement parce que du coup ça rend ton code plus lisible aussi :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

zion75
Invité n'ayant pas de compte PHPfrance

01 mars 2011, 15:38

Merci bien. Le problème est résolu