Conserver la valeur d'un select après une validation [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 25 octobre 2010
Statut
Membre
Dernière intervention
26 octobre 2010
-
Messages postés
4
Date d'inscription
lundi 25 octobre 2010
Statut
Membre
Dernière intervention
26 octobre 2010
-
Bonjour tout le monde,

Je débute dans la programmation sous PHP et je suis confronter à un problème que je n'arrive pas à résoudre malgré plusieurs tentatives.

J'ai un formulaire qui contient des SELECT pour l'enregistrement d'une date. Je souhaiterai que la valeur sélectionner par l'utilisateur ne s'efface pas après un rafraichissement ou un clic sur mon bouton validation.

Voici le code qui imbrique mon select :



echo '<SELECT name="jour" Size="1" >';
echo '<option value="" selected></option>'; //ligne d'option vide
for($i=1; $i<=31;$i++){ //Lister les jours
if ($i < 10){ //Lister les jours pour pouvoir leur ajouter un 0 devant
echo "<OPTION>0$i
</OPTION>";
}
else {
echo "<OPTION>$i
</OPTION>";
}

J'ai fait un selected sur une value vide car je trouve que cela fait plus propre en arrivant sur le formulaire. Par contre je n'arrive vraiment pas à placer mon code pour garder en mémoire l'option sélectionner par l'utilisateur.

J'ai tester le code suivant que j'utilise pour mes input text sans succès :



echo '<option value="<?php if(!empty($_POST[\'jour\'])){echo $_POST[\'jour\'];} ?>" selected></option>';

Par avance je vous remercie pour vos réponses.

Cordialement,
Linda

7 réponses

Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Bonjour,

En fait c'est le mot clé selected qui te permet de présélectionner l'option voulu.

Essai :

echo '<SELECT name="jour" Size="1" >';
echo '<option value=""></option>'; //ligne d'option vide
for($i=1; $i<=31;$i++)
{
//Lister les jours
$jour = $i;
if ($i < 10) $jour = "0".$jour;


$selected = '';

// si le jour est égale au jour choisi par l'utilisateur, on met la variable selected a 'selected' pour présélectionner l'option
if(isset($_POST['jour']) && $_POST['jour'] == $jour)
{
$selected = 'selected';
}

echo "<OPTION value='".$jour."' $selected>$jour</OPTION>";
}
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

En HTML correct l'attribut selected a obligatoirement comme valeur selected : selected="selected".

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Autant pour moi,

Suffit de remplacer
$selected = 'selected';

PAR

$selected = 'selected="selected"';
Messages postés
4
Date d'inscription
lundi 25 octobre 2010
Statut
Membre
Dernière intervention
26 octobre 2010

C'est super, j'adore, ça marche !!!
Ça à l'air tellement simple quand on vous lit !

Merci beaucoup ludwig69 et neigedhiver, vous être géniaux




Linda
Messages postés
4
Date d'inscription
lundi 25 octobre 2010
Statut
Membre
Dernière intervention
26 octobre 2010

Heu par contre juste un petit renseignement, doit-on refermer ce code par la ligne suivante ?
ça marche avec ou sans mais bon tant qu'a faire autant faire un code propre ...



echo "</SELECT>";



Linda
Messages postés
128
Date d'inscription
lundi 21 avril 2008
Statut
Membre
Dernière intervention
6 mai 2011
2
Oui il faut bien préciser la fermeture de la balise select avec </select>
Messages postés
4
Date d'inscription
lundi 25 octobre 2010
Statut
Membre
Dernière intervention
26 octobre 2010

Bien reçu. Merci :)