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

,
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
<?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)