Garder la valeur d'une liste déroulante après validation
RésoluBryant -
Voila, je suis en train de développer un formulaire et je rencontre un petit soucis sur une liste déroulante.
Alors en fait mon soucis est que lorsque je sélectionne un choix dans ma liste déroulante, je voudrais que le choix sélectionné reste sélectionné une fois que je valide le formulaire même si d'autres champs du formulaire ne sont pas bons !
En fait, je veux éviter de reprendre mon formulaire à zéro à chaque fois que j'ai une erreur dans mon formulaire.
Concernant les champs textes, je n'ai pas de soucis par contre pour ma liste déroulante, je n'arrive pas à garder le choix sélectionné.
Voici le code que j'ai mis dans ma liste déroulante :
<label for="Statut" class="float">Statut : </label> <select name="Statut"> <option name="Statut" value="Administrateur" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['form_statut'] == "Administrateur")? 'selected="selected"' : ''; ?> >Administrateur</option> <option name="Statut" value="Membre" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['form_statut'] == "Membre")? 'selected="selected"' : ''; ?> >Membre</option> </select><br />
Si quelqu'un pouvais m'aider, cela serait avec plaisir !
D'avance merci
3 réponses
Lors de la validation d’un formulaire, la sélection dans la liste déroulante Statut ne reste pas active lorsque des erreurs surviennent sur d’autres champs, ce qui oblige à recommencer le formulaire. Les échanges préconisent d’éviter les sessions pour stocker les valeurs et de centraliser le traitement dans un tableau $form issu de $_POST, puis de reconstituer Statut et les autres champs lors du rendu. Concrètement, on lit $_POST['Statut'], on compare avec les valeurs 'Administrateur' ou 'Membre', et on ajoute l'attribut selected lorsque la valeur correspond, afin que le choix persiste. En cas de doute, l’utilisation d’un print_r($_SESSION) ou d’un dump des variables POST peut aider à diagnostiquer pourquoi l’évaluation conditionnelle ne déclenche pas l’attribut selected.
-
salut et ce code que tu as ne marche pas? alors enelve les doubles quotes que tu as mis a selected="selected" , mets plutot "selected = selected"
-
Salut Bryant,
Comment va ? :)
Essayez ça pour voir:
<label for="Statut" class="float">Statut : </label>
<select name="Statut">
<option name="Statut" value="Administrateur" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['form_statut'] == "Administrateur")? 'selected' : ''; ?> >Administrateur</option>
<option name="Statut" value="Membre" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['form_statut'] == "Membre")? 'selected' : ''; ?> >Membre</option>
</select><br />
Cordialement. -
Tu vérifi une variable mais pas l'autre c'est bizarre, essaie :
<label for="Statut" class="float">Statut : </label> <select name="Statut"> <option name="Statut" value="Administrateur" <?php echo (isset($_SESSION['form_statut']) && $_SESSION['form_statut'] == "Administrateur") ? 'selected' : ''; ?> >Administrateur</option> <option name="Statut" value="Membre" <?php echo (isset($_SESSION['form_statut']) && $_SESSION['form_statut'] == "Membre") ? 'selected' : ''; ?> >Membre</option> </select><br />
ou
<label for="Statut" class="float">Statut : </label> <select name="Statut"> <option name="Statut" value="Administrateur" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['statut_info'] == "Administrateur")? 'selected="selected"' : ''; ?> >Administrateur</option> <option name="Statut" value="Membre" <?php echo (isset($_SESSION['statut_info']) && $_SESSION['statut_info'] == "Membre")? 'selected="selected"' : ''; ?> >Membre</option> </select><br />
-
-
-
-
Ben voilà ;) donc tu perd du teps à essayé de comprend pourquoi ton code de selection fonctionne pas alors qu'il marche très bien... Le problème viens du fait que la variable est pas défini.
Je t'avais dit hier je crois de ne pas utilisé les sessions pour controller un formulaire car ça joue sur les performance de ton script et SURTOUT les sessions pose problème avec la sécurité donc ont les utilise pas quand c'est pour gérer des données perso.
quand ont fait un formulaire ont édite déjà un tableau du genre :
$form = array( 'pseudo' =>, 'mdp' =>, 'nom' =>, 'prenom' => );
Puis quand tu vérifi le $_POST tu peut faire un truc du genre :
$form = array( 'pseudo' => (isset($_POST['pseudo'])) ? $_POST['pseudo'] : '', 'mdp' =>(isset($_POST['mdp'])) ? $_POST['mdp'] : '', 'nom' =>(isset($_POST['nom'])) ? $_POST['nom'] : '', 'prenom' =>(isset($_POST['prenom'])) ? $_POST['prenom'] : '', );
ici en quelques lignes 1 : tu détermine tes valeurs et en 2 : si le formulaire est posté tu met à jour les valeur.
et de 3 tu as pas 36 nom de variable et au final tu t'y retrouve plus facilement car tu aura que UNE variable nommé $form pour ton formulaire.
J'ai déjà travaillé avec des formulaire extrêmement long est multiple donc tu dois apprendre à faire simple -
-