Valeur liste apresvalidation de formulaire!

Résolu
laetlastar Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
laetlastar Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je suis nouvelle, et j'ai déjà un problème (mais il est petit ^^)

en fait j'ai un formulaire pour choisir une date à partir de laquelle on fait une recherche (3 listes déroulantes pour le jour le mois et l'année).
Le résultat s affiche sur la meme page. Je veux que le jour mois et année qu on a choisi pour la recherche reste affiché dans chaque liste. Pour le jour ca fonctionne, mais pour le mois non :s et je ne comprend pas pourquoi !
mon formulaire s appelle mois
$mois est un tableau contenant en lettre le nom des mois
&mois 1 est le mois dernier (le mois qui s affiche par défaut)

Je sais qu on passe au bon endroit dans les boucles avec des echo
voila mon code
for($i = 1; $i <= 12; $i++){
if(isset($_POST['mois'])&& $_POST['mois'] == $i){
$date .= "<option value=\"" . $i . "\" selected>" .$mois[$i] . "</option>";
}
else{
if($i == $mois1){
$date .= "<option value=\"" . $i . "\" selected>" .$mois[$i] . "</option>";
}
else {
$date .= "<option value=\"" . $i . "\">" . $mois[$i] . "</option>";
}
}
}

Donc voila si vous avez une petite idée!!! j'avais fait la meme chose pour le jour et ca fonctionne tres bien!

Merci,

Laetitia
A voir également:

3 réponses

macgawel Messages postés 664 Date d'inscription   Statut Membre Dernière intervention   89
 
Bonjour.

Regarde un peu le code source de la page que tu généres.
A vue de nez, le problème vient de
if(isset($_POST['mois'])&& $_POST['mois'] == $i) {
...}
else {
...}

Avec ça, si tu as choisi un mois différent de $mois1 tu te retrouves avec deux champs SELECTED :
Mettons que $mois1 = 1 et $_POST['mois'] = 2.
Ta boucle devient :
$i = 1
$_POST['mois'] est défini mais <> $i => on passe dans le ELSE
Là, $i = $mois1 = 1 => on met janveir à SELECTED.

On reprend la boucle, avec $i = 2
$_POST['mois'] est défini ET = $i
=> on met fevrier à SELECTED.

A priori, tu dois avoir le même problème avec tes jours, même si tu ne le vois pas (quand le navigateur a deux SELECTED, je ne sais pas ce qu'il choisit, mais l'ordre de choix te donne peut-être l'impression que c'est bon).

Pour corriger :
$mois_selectionne = $mois1; // Par défaut, on selection $mois1
if ( isset ($_POST['mois'])) { // Si on a fait un choix, on sélectionne le mois choisi...
   $mois_selectionne = $_POST['mois']
}

for ($i = 1; $i <= 12; $i++){
   if ($i == $mois_selectionne ) {
      ...
   }
   else {
      ...
   }
}
0
laetlastar Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   5
 
re,

effectivement j'ai le même problème avec mes jours... tous mes espoirs s anéantissent lol ^^

je vais tester avec ta solution

merci pour les explications

Laeti
0
laetlastar Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   5
 
merci macgawel ça marche impec !

je reviendrais quand j'aurais un problème hihi

Laetitia
0