Page 1 sur 1

Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 15:33
par Jonathan
Bonjour,

Cette question a été posée mainte et mainte fois sur plusieurs forums, mais je n'arrive pas à m'en sortir...

Je fais un formulaire, dans lequel il y a des menus déroulants, des champs input, des listes à puces. Une fois le formulaire complété, si l'utilisateur a oublié un champ, il retombe sur la même page. Je voudrais qu'à ce moment, son choix dans la liste déroulante soit encore sélectionné. J'ai réussi à faire ça pour les inputs et les listes à puces, mais pas pour les menus déroulants...


Tout se trouve dans un echo :
echo'<select name="Nbcomptable">
<option>0</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>>10</option>
<option>>20</option> name="Nbcomptable" type="text" class="TexteFicheP" size="30" value="' . $Nbcomptable . '"/>';

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 15:55
par misterflo
Resalut :D,

il faut mettre un selected dans le <option>
...
<option selected="selected">1</option>
...
Par contre, il ne te manquerait pas des value="" dans tes options ?

Il existe une autre solution, au lieu de mettre un selected, tu peux réécrire la ligne sélectionné précédemment et la mettre en premier.

EDIT : Ah ui, c'est quoi cette ligne à la fin ?

Code : Tout sélectionner

name="Nbcomptable" type="text" class="TexteFicheP" size="30" value="' . $Nbcomptable . '"/>';

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 16:05
par Jonathan
Resalut ! Comme tu peux le voir, je peine toujours avec mon fameux formulaire ! Mais j'en viens à bout... Grâce à ton aide.

Hum, la dernière ligne est sans doute inutile, je me suis servi du code des autres champs, et du coup elle a du creuser son trou ici ! J'ai préféré ne pas y toucher, mais à y réfléchir, je pense que seul le value="' . $Nbcomptable . '" a sa place ici...

Autrement, la technique du selected="selected" ne fonctionne pas... Je veux que si l'utilisateur oublie de remplir un champ, il soit redirigé sur la même page et que son choix réapparaisse dans le menu déroulant, pour pas qu'il n'ait à le refaire. Or, j'ai essayé ta technique et le choix sélectionné est le tout dernier, quelque soit mon choix au préalable... :(

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 16:31
par misterflo
Enlève cette dernière ligne bizarre ^^

Code : Tout sélectionner

name="Nbcomptable" type="text" class="TexteFicheP" size="30" value="' . $Nbcomptable . '"/>
Le select n'est pas fermé non plus !!
</select>

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 16:45
par macgawel
Autrement, la technique du selected="selected" ne fonctionne pas... Je veux que si l'utilisateur oublie de remplir un champ, il soit redirigé sur la même page et que son choix réapparaisse dans le menu déroulant, pour pas qu'il n'ait à le refaire. Or, j'ai essayé ta technique et le choix sélectionné est le tout dernier, quelque soit mon choix au préalable... :(
Tu as mal essayé, alors :mrgreen:
<?php
echo '<select name="Nbcomptable">';
for ($i = 0; $i <= 20; $i++) {
	echo "<option";
	if ( isset ($_POST['Nbcomptable']) && $i == $_POST['Nbcomptable'] ) {
		echo ' selected';
	}
	echo ">$i</option>\n";
}
echo "</select>";
?>

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 16:50
par Jonathan
Bonjour macgawel,

J'ai souri en voyant ton message ! En essayant, je me suis dit que ça allait forcément marcher. Mais... Ca ne marche toujours pas :( Ai-je encore mal essayé ?!
J'ai pourtant copier/coller ton code, mais rien à faire, quand je retombe sur la page, le choix est sur "0"...

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 16:59
par misterflo
Ton formulaire HTML est bien défini en post ?

C'est bien un bouton submit qui valide le formulaire ?

Il y a bien les balises <form> et </form> qui encadre ton formulaire ?


C'est bizarre, car le code de macgawel est vraiment nickel !

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 17:05
par Jonathan
Oui, il est bien définit en post.
Oui, c'est bien un bouton submit qui valide le formulaire.
Oui aussi pour les balises <form>... :(

Je ne vois pas d'où mon problème peut venir...

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 17:59
par GiorgioLino
@Jonathan

Peux-tu poster la partie de ton code qui va de <form> à </form> ? (balises form incluse)

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 16 mai 2011, 18:05
par Jonathan
Hum, oui je peux, mais je ne suis pas sûr qu'il y ait un grand intérêt... Surtout qu'il y a 600 lignes environ. Que veux-tu voir exactement ?

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 17 mai 2011, 10:51
par Jonathan
Le code de macgawel semble parfait, mais ça ne marche pas... :( Help !

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 17 mai 2011, 11:01
par Jonathan
J'ai trouvé mon erreur, c'était $_SESSION et non $_POST dans le code de macgawel...

Merci à ceux qui m'ont aidé ! :)

Re: Garder en mémoire une valeur dans une liste déroulante

Posté : 17 mai 2011, 11:02
par popy
@Jonathan

Peux-tu poster la partie de ton code qui va de <form> à </form> ? (balises form incluse)