IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Réafficher liste déroulante avec option précédemment sélectionnée par l'utilisateur


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Réafficher liste déroulante avec option précédemment sélectionnée par l'utilisateur
    Bonjour,

    Je suis en train de faire un formulaire qui vérifie si l'adresse mail existe dans la base avant d'enregistrer. Si l'adresse existe je réaffiche le formulaire avec les données saisies par l'utilisateur.

    Pour les listes déroulantes je mémorise la donnée saisie dans un tableau pour la réafficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <option selected="selected">
                    <?php 
    		if(isset($_POST['id_region'])){
    		$region = array (1 => 'Alsace','Aquitaine','Auvergne');
    		$choix = ($_POST['id_region']);
    		echo $region [$choix];
    		}		
    		else {$choix = "choisissez...";
    		echo $choix;}		
    		?>
                    </option>
                    <option value="1">Alsace</option>
                    <option value="2">Aquitaine</option>
                    <option value="3">Auvergne</option>
    </select>
    Si je saisis une adresse mail qui existe déjà et que j'ai choisi l'Aquitaine ça me réaffiche correctement le formulaire avec "Aquitaine" affiché.

    Le problème c'est qu'entre temps la variable $_POST['id_region'] a pris la valeur 0 à cause du "selected".

    Conséquence si après le réaffichage du formulaire je refais une validation sans changer l'adresse, au réaffichage il me fait une erreur "undefinited index" (Normal puisque j'essaie d'afficher dans le tableau la valeur $region [0] qui n'existe pas).
    Ou si après le réaffichage je change pour une adresse valide, ça m'enregistre le champ "id_région" à 0 dans la base alors que j'avais "Aquitaine" affiché à l'écran.

    Comment faire pour que la variable $_POST['id_region'] prenne la valeur affichée après avoir réaffiché le formulaire (2 dans le cas d'Aquitaine)?

    Merci d'avance pour votre aide

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,
    Pourquoi ne pas mettre une value à cet <option/> et quel et le rapport avec selected="selected" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option selected="selected" value="<?php echo $_POST['id_region']; ?>">

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Sous le charme
    Ca semble séduisant comme réponse, mais je mets ou cette ligne ?

    Le rapport avec selected est que c'est l'option par défaut et que c'est égal à la valeur 0.

    Je suis débutant...

    Peut tu me faire un copier-coller de mon code avec la ligne ajoutée stp ?

    Merci

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Bonjour,

    la modification des value ne changera rien au problème. En effet il met selected par défaut à la premiere option.
    Voila comment je fais en general :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $tab=array('Aquitaine', 'Auvergne'...);
    echo '<select name="id_region">';
    $i=0;
    $nb=2;
    while ($tab[i]<2)
    {
             if(!empty($_POST['id_region']) && $_POST[id_region]==$tab[$i])
            {
                  echo '<option value="'.$i.'" selected>'.$tab[$i].'</option>';
             }
             else
              {
                     echo '<option value="'.$i.'" >'.$tab[$i].'</option>';
                 }
    }   
    echo '</select>';
    Il y a surement mieux, mais ça aide deja un peu!

    Bon courage!

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Bloup bloup
    Je patauge...

    A quoi sert la variable $nb ? Apparemment tu ne t'en sers pas...

    $tab[i] c'est possible ? C'est pas $tab[$i] plutôt ?

    Tu pourrais me l'adapter pour mon code stp ?

    C'est ma 1ère boucle en php ! Tu n'incrémentes pas $i dans la boucle ?

    Je vais essayer d'adapter..

  6. #6
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Marche pô
    Ca ne marche pas...

    Je voudrais juste que la variable ($_POST['id_region']) prenne la valeur de ce qui est affiché lors du réaffichage...

    Personne d'autre pour m'aider ?

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option selected="selected" value="<?php echo $_POST['id_region']; ?>">
    C'est quand meme évident que ce code se place à l'endroit ou tu as écrit <option selected="selected"> non ?

  8. #8
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Doucement...
    Bin oui mais bon...

    Au premier affichage de mon formulaire la variable $_POST['id_region'] n'existe pas alors ça m'étonnerait que ça affiche quelque chose !

    Je l'ai dit je suis débutant un peu d'indulgence et de compréhension...

    J'essaie d'adapter ta solution je te tiens au courant...

  9. #9
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option selected="selected" value="<?php if(isset($_POST['id_region'])) echo $_POST['id_region']; ?>">

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut Speed !
    Tu es rapide !!!

    Et si ma variable n'existe pas je voudrais que ça m'affiche "choisissez..."

    Tu peux le faire aussi ????

    Merci

  11. #11
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    if(condition) { action1 } else { action2 }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option selected="selected" value="<?php if(isset($_POST['id_region'])) {echo $_POST['id_region'];}else{echo '0';} ?>">
    je ne comprends pas pourquoi tu veux afficher "Choisissez" dans la value ?
    Tu peux le faire aussi ????
    On dit s'il te plaît

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    Concernant mon code de tout à l'heure la variable $nb est le count du tableau de regions mais effectivement vu que tu as tous noms de regions en statique ça ne sert pas.
    Et oui j'ai oublié d'incrémenter i dans la boucle.

    La solution de Thomas R est pas mal mais n'affichera qu'une seule valeur du select (impossible d'en changer). Si c'est ça que tu souhaites alors c'est bon mais si jamais tu veux quelque chose de dynamique, prends plutôt mon code.

    ++

  13. #13
    Membre régulier
    Inscrit en
    Octobre 2008
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 329
    Points : 97
    Points
    97
    Par défaut La solution
    J'ai trouvé la solution :

    Voici le code d'une liste déroulante qui se réaffiche avec l'option sélectionnée précédemment par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <select name="id_region" id="id_region" >
     
    <option value="0"<?php if(!isset($_POST['id_region'])) { echo "selected=\"selected\"";  } ?>>choisissez...</option>
    <option value="1"<?php if((isset($_POST['id_region']))&&(($_POST['id_region'])== 1)) { echo "selected=\"selected\"";  } ?>>Alsace</option>
    <option value="2"<?php if((isset($_POST['id_region']))&&(($_POST['id_region'])== 2)){ echo "selected=\"selected\"";  } ?>>Aquitaine</option>
    <option value="3"<?php if((isset($_POST['id_region']))&&(($_POST['id_region'])== 3)){echo "selected=\"selected\"";  } ?>>Auvergne</option>
     
    </select>

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 291
    Points : 217
    Points
    217
    Par défaut
    C'est pas pour t'embêter mais mon code faisait exactement la même chose... et c'est plus joli avec une boucle (plus dynamique)!

    Bonne journée!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Liste déroulante avec dataSet et valeur par défaut
    Par Kylia dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/05/2014, 10h36
  2. Réponses: 5
    Dernier message: 16/10/2012, 17h07
  3. Réponses: 11
    Dernier message: 19/02/2010, 16h00
  4. Réponses: 3
    Dernier message: 13/02/2008, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo