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 -
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
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:
- Valeur liste apresvalidation de formulaire!
- Whatsapp formulaire opposition - Guide
- Liste déroulante excel - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Liste déroulante en cascade - Guide
3 réponses
Bonjour.
Regarde un peu le code source de la page que tu généres.
A vue de nez, le problème vient de
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 :
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 { ... } }