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 :

Mise en mémoire d'un champs de liste déroulante [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut Mise en mémoire d'un champs de liste déroulante
    Bonjour,
    Je travaille sur un formulaire assez long avec validation des champs en php.
    Certain champs sont obligatoires.
    Si l'internaute oubli un champs après validation PHP bloque le déroulement du test avec un message qui indique le champs concerné.
    Jusque la rien de nouveau.
    Le pblm c'est que quand l'internaute revient au formulaire tous les champs sont vides....
    J'ai donc créé des variables en session pour les champs saisis.
    En ce qui concerne les champs de texte pas de pblm cela fonctionne....
    Pour les listes déroulant...hum c'est pas gagné.
    Voici mon pblm :
    Quand je valide pour la première fois mon formulaire tout ce déroule normalement, affichage du champs incriminé, retout au formulaire.
    Gagné la saisie dans la liste déroulante est bien la: .
    Je revalide pour 2ième fois mon formulaire tjr en oubliant de saisir un champs. déroulement avec message sur le champs incriminé.
    Donc je reviens à mon formulaire et la....
    La saisie dans ma liste déroulante à disparue; en faite la variable de ma session c'est réinitialisée.
    Et la je bloque grave.
    Voici mon code sur la 1er page :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     <form action="traitement_devis.php" method="post">
    <!--RENSEIGNEMENTS SUR ETABLISSEMENT-->
    <fieldset >
         <legend>Renseignements sur votre établissements</legend>
          <p>
          <label class="red">Le status de votre étabblissement :</label>
              <select name="status" id="status">
                 <option value="" selected="selected" ><?php if (!empty($_SESSION["status"])) {echo htmlspecialchars($_SESSION["status"]);} ?></option>
                  <option value="société" >Société</option>
                  <option value="PME">PME</option>
                  <option value="Commerce">Commerce</option>
                  <option value="Agence Immobilière">Agence Immobilière</option>
                  <option value="Profession Lib&eacute;rale">Profession libérale</option>
                  <option value="Auto entreprenneur">Auto-entreprenneur</option>
                   <option value="Association">Association</option>
                   <option value="Particuliers">Particulier</option>
                   <option value="Autre">Autre</option>
            </select>
    </p>
    <p>
    <label class="red" for="activite">Votre activité :</label>
        <input  name="activite" size="30" id="act" maxlength="27" value="<?php if (!empty($_SESSION["activite"])) {echo htmlspecialchars($_SESSION["activite"]);}?>" type="text"/>
    <p>
    <label class="red">Public ciblé :</label> 
       <input type="text" name="public" size="30" maxlength="27" value="<?php if (!empty($_SESSION["public"])) { echo htmlspecialchars($_SESSION["public"]);}?>" /
    </p>
    <p>
    <label class="red">Entreprise en cours de création :</label>
      <select name="entrcreation" id="ent">
         <option value="<?php if (!empty($_SESSION["entrcreation"])){echo htmlspecialchars($_SESSION['entrcreation']);}else{echo '?';}?>" selected="selected">?</option>
        <option value="oui">Oui</option>
        <option value="Non">Non</option>
        </select></p>
      </fieldset>
    Sur ma feuille de validation PHP le code suivant :

    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
    18
    19
    20
    21
    22
    23
    24
    25
     
    <!--**** TRAITEMENT DU FORMULAIRE *************-->               	
    			<?php
    				// Traitement des oublis champs
    				$status = $_POST["status"];
    				$activite = $_POST["activite"];
    				$public = $_POST["public"];
    				$entrcreation = $_POST["entrcreation"];
     
    //Mise en mémoire des champs remplis
    				$_SESSION["status"] = $status;
    				$_SESSION["activite"] = $activite;
    				$_SESSION["public"] = $public;
    				$_SESSION["entrcreation"] = $entrcreation;
     
     if(empty($status) OR empty($activite) OR empty($public) OR empty($entrcreation))
        echo '<p class="oubli_champs">Vous avez oublié des champs..!</p>';
    if(empty($status)) { echo '<p class="champs_manquants">Vous devez choisir le status de votre établissement !</p>'; }
    				if(empty($activite)) { echo '<p class="champs_manquants">Vous devez indiquer votre activité !</p>'; }
    				if(empty($public)) { echo '<p class="champs_manquants">Vous devez indiquer le type de public ciblé ! !</p>'; }
    				if(empty($entrcreation)) { echo '<p class="champs_manquants">Vous devez indiquer si c'est une création ou non !</p>'; }				
    echo '<p class="retour"><a href="devis.php">Retour au formulaire</a></p>';include("include/footer.php");exit(0);
    {
    else
    }
    Ensuite le code PHP gère l'envoi du mail si tout est ok plus haut.

    Je dois dire que je suis débutant en PHP.....

    Si qq pouvait me donner un tuyau se serait super sympas

    Merci à tous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    L'"option" que tu ajoutes n'a pas de "value"
    Il est plus simple de se servir de PHP pour écrire ta liste déroulante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    $tblStatus = array('Société','PME','Commerce', 'Agence Immobilière');
    echo '<select name="status" id="status">';
    foreach ($tblStatus as $value) {
        $selected = (isset($_SESSION['status']) && $_SESSION['status'] == $value) ? ' selected="selected" ' : "";
        echo '<option value="' . $value . '"' . $selected .'>' . htmlspecialchars($value) . '</option>';
    }
    echo '</select>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut
    Ok merci Vincent j'éssaie de suite ton code Merci

  4. #4
    Membre averti
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut
    Bingo ça marche super, Vincent, une question pour éclairer ma lanterne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selected = (isset($_SESSION['status']) && $_SESSION['status'] == $value) ? ' selected="selected" ' : "";
    Que veux dire le ? $value et 'selected....
    Merci pour ta réponse

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est un operateur ternaire
    (condition) ? si vrai : si faux

    J'aurais pu écrire en plus long :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_SESSION['status']) && $_SESSION['status'] == $value) {
       $selected =  ' selected="selected" ';
    }
    else {
        $selected = "";
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Homme Profil pro
    Photographe
    Inscrit en
    Mai 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Photographe

    Informations forums :
    Inscription : Mai 2011
    Messages : 35
    Par défaut
    Merci Vincent pour ton explication

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/05/2007, 00h55
  2. Mise en forme conditionnel d'options dans liste déroulante
    Par adr22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 06/03/2007, 13h53
  3. récuperer la valeur d'un champ select (liste déroulante)
    Par bous_saad317 dans le forum Struts 1
    Réponses: 7
    Dernier message: 03/11/2006, 13h14
  4. mettre par défaut un champ dans liste déroulante
    Par zouzou1010 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/05/2006, 15h12
  5. Champs dynamiques : listes déroulantes liées
    Par Mr N. dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 12/12/2005, 16h15

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