Garder la valeur selectionnée dans une liste déroulante après rafraichissement

Eléphant du PHP | 57 Messages

24 janv. 2008, 11:01

Bonjour,

Je pense que le titre parle de lui même c'est à dire que je selectionne un élément dans ma liste déroulante et ensuite après rafraichissement de ma page je désirerais que ma liste déroulante reste sur la sélection que j'avais cliquer juste avant... cela doit être une histoire de $_SESSION mais je voulais savoir si quelqu'un avait déjà l'astuce :wink:
Joss91

ViPHP
ViPHP | 2287 Messages

24 janv. 2008, 12:01

Bonjour,

Il faut tester la valeur en question en php (tout dépend ou tu la stockes, si c'est en session c'est effectivement une variable de session qu'il faut tester) pour savoir sur quelle balise <option> de ta liste placer l'attribut selected.

Petit exemple :

Code : Tout sélectionner

<form method="post"> <select name="fruit" id="fruit"> <option value="1">Banane</option> <option value="2">Fraise</option> <option value="3" selected="selected">Cerise</option> <option value="4">Mandarine</option> </select> </form>
Dans cette liste de choix, lors du chargement de la page à l'écran, la Cerise sera sélectionnée (Si aucun attribut selected n'est présent, c'est la première valeur de la liste qui est sélectionnée par défaut).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 57 Messages

28 janv. 2008, 16:42

oui le selected est à placer au bon endroit je suis d'accord mais dans mon cas comment fait-on svp ? voici mon code :
$rq="Select * from client where cabinet='$cab' order by id;";
			   $result= mysql_query ($rq) or die ("Select impossible");
			   echo "<form method='POST' style='text-align: center;' action='valid.php'>";?>  <select size="1" id="cat" name="cat" onclick="refresh_message();" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
			
			   <?php
			   while ($dt=mysql_fetch_row($result))
			   {
					// Remplir la liste déroulante des catégorie	
					echo "<option id='compte' name='compte' value=".($dt[0]).">".($dt[1])."</option>";
					if ($i==0) { $j=$dt[0]; $i=1; }
				
			   }
			   ?>
			  
			    </select>

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

28 janv. 2008, 17:42

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 2287 Messages

28 janv. 2008, 18:03

oui le selected est à placer au bon endroit je suis d'accord mais dans mon cas comment fait-on svp ?
Eh bien on retrousse ses manches et on y va :-)

Sur quoi tu bloques, au juste ?
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 57 Messages

28 janv. 2008, 18:19

je bloque sur la valeur à tester j'ai essayer avec $_POST['cat'], $_POST['compte'], $_POST['dt'] et aucun de ces trois marche pour récupérer la valeur selectionnée
Joss91

Eléphant du PHP | 445 Messages

28 janv. 2008, 18:23

Que fait ta page valid.php avec ce formulaire.

Donnes le code de valid.php comme cela on pourras recuperer la valeur dans la base de données et affiche le selected au bon endroit.

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

28 janv. 2008, 18:23

Ton formulaire est bien envoyé en post.. ton champ s'appelle bien "cat"... mais lorsque tu sélectionne une valeur dans la liste, c'est la fonction sendData('id='+this.value,'liresc.php') qui est exécutée... peut être qu'en regardant ce qu'elle fait, tu sauras où et quoi chercher :)

Une autre solution plus basique étant de faire un print_r($_POST) ou print_r($_GET) pour voir ce qu'ils contiennent : clé et valeur ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 57 Messages

28 janv. 2008, 18:44

Que fait ta page valid.php avec ce formulaire.

Donnes le code de valid.php comme cela on pourras recuperer la valeur dans la base de données et affiche le selected au bon endroit.
Je ne m'interesse pas à la page valid.php car je n'envoi pas le formulaire : je veux juste récupérer la valeur de l'élement cliqué dans ma liste (pour après la tester et la mettre en selected après raffraichissement)
Joss91

Eléphant du PHP | 445 Messages

28 janv. 2008, 18:47

Les donnees $_POST ne sont pas transmisent durant un rafraichissement.

Pourquoi as tu besoin de faire un rafraichissement.

Eléphant du PHP | 57 Messages

29 janv. 2008, 01:35

effectivement ce n'est pas POST qu'il faut utiliser mais quelquechose qui detecte ce que l'on selectionne avant le rafraichissement...
en fait pour répondre aux curiosités, avec mon select je renseigne un autre formulaire via ajax. je submit cet autre formulaire quand je veux et ceci a pour action entre autre de rafrachir ma page.
Et donc j'aimerais retrouver ce que j'ai selectionné avant le rafraichissement...
Joss91

d0m
Mammouth du PHP | 1141 Messages

29 janv. 2008, 09:38

je sais pas si ca fait bricolage, mais puisque tu utilises de l'ajax, tu peux le faire avec un petit script qui met la selection en session lorsque tu selectionnes.