Préselection d'un choix dans une balise select

Eléphant du PHP | 73 Messages

06 août 2007, 11:04

Bonjour,

Je souhaite préselectionner un choix dans ma balise select.
Je récupère l'ID de ce que je doit préselectionné.
Je ne sait pas comment comment faire.... :(


Je construit ma liste déroulante comme ceci :

<tr>	
							<td width='15%' align="left" class='input_champ'>Support :</td>
							<?php echo '<td><select name="Selection1">',"\n";  ?>
							<option value=''></option><?php
							 foreach($t_tache3->resultat as $support) {
								 // Affichage de la ligne 
								 echo "\t",'<option value="','"', $selected ,'>', $support->getSUPPORT_TYPE(),'</option>',"\n";
							 } 
							 echo '</select></td>',"\n"; 
							?> 
						</tr>

Je récupère l'ID comme ceci :
$_POST['f_support_numero']
Je doit pouvoir mettre cette valeur de façon à ce que ça sélectionne la bonne ligne dans ma liste.

Des iddées ? :)

ba bye
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

Eléphant du PHP | 451 Messages

06 août 2007, 11:12

Bonjour,

Si tu regardes le fonctionnement de la balise select, tu verras qu'il faut lui ajouter selected pour présélectionner une option.

Ne reste plus qu'à trouver le bon test pour ajouter ce selected quand c'est nécessaire.

En espérant que ça t'aidera.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

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

06 août 2007, 11:14

Pour qu'une option soit sélectionnée par défaut, il suffit juste que la balise contienne l'attribut "selected" ...

Tu as une boucle qui t'affiche tes options une par une et une variable qui contient la valeur de celle qui doit être sélectionnée.. doit pas être bien difficile de comparer les deux et de coller le "selected" dans celle qui va bien ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 73 Messages

06 août 2007, 13:36

Avec ce code :
<?php echo '<td><select name="Selection1">',"\n";  ?>
							<option value=''></option><?php
							 foreach($t_tache3->resultat as $support) {
								 // Affichage de la ligne 
								 $selected = NULL;
								 $selected = "selected=".$_POST['f_support_numero'];
								 echo "\t",'<option value="','"', $selected ,'>', $support->getSUPPORT_TYPE(),'</option>',"\n";
							 } 
							 echo '</select></td>',"\n"; 
							?> 

J'obtient :


La dernière option crée par le foreach ce qui pour moi est maintenant logique parce que le champs n'est pas mis à jour. (je pense avoir intégrer les erreurs que j'ai faites sur mon autre sujet ^^)

Je n'ai pas expliquer ça avant mais en fait c'est un formulaire de modification donc je préselectionne les champs (enfin j'aimerai...) et si la personne veut les modifier elle le fait sinon ils restent avec al valeur du selected.

De fait :

Vu que je fait en sorte dans le code ci dessus que mon $selected ait l'ID du "truc" à selectionner normallement si je met :

Code : Tout sélectionner

<option value="','"', $selected ,'>
Pour moi ça devrait prendre la bonne valeur :(

EDIT :


Mon esprit suis deux axes différents l'un me disant que

Code : Tout sélectionner

mon $selected a l'ID du select
et l'autre me disant que le language est interprêter par le serveur => javascript (mais ou ?)

Bref je suis un peu paumer xD
--> je m'aime <--
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

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

06 août 2007, 13:51

Si tu regardes le code source généré, tu verras apparaitre l'attribut "selected" dans chacune de tes options. Elles sont donc considérées comme toutes sélectionnées, et puisque ton select n'est pas multiple, seule la dernière valeur est affichée sélectionnée par défaut.

Pour sélectionner par défaut une option il faut qu'elle (et elle seule) contienne l'attribut selected ... A toi de voir quand est ce qu'il faut écrire ou non cet attribut dans ta balise, en fonction de la valeur que tu as reçu en $_POST et de celle en cours dans ta boucle :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

d0m
Mammouth du PHP | 1141 Messages

06 août 2007, 13:52

Le principe est que dans chaque balise <option.....> tu mettes du code php qui vérifie la condition : si l'id de l'élement est la même que l'ID de réference tu ecris 'SELECTED'.
Pas besoin de javascript, juste du php.

Eléphant du PHP | 73 Messages

06 août 2007, 15:23

Merci bien j'ai comprit en faisant un mix de tout ce que vous m'avez dit et en faisant un autre truc dans une requête de ma classe j'ai récupérer l'id avec laquelle je peut comparer (ce que j'ai dans mon $_POST) donc voilà ça fonctionne.

Merci pour vos précisions sur le select :D

bonne soirée.
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD