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 :

liste deroulante dans formulaire auto invoque et gestion des erreurs


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut liste deroulante dans formulaire auto invoque et gestion des erreurs
    Le problème est le suivant :
    1) je débute ))
    2) et c'est le plus important
    pour les listes déroulantes avec gestion des erreurs, comme je travaille avec "print form" à chaque fois qu'il y en a une erreur dans le formulaire les donnees choisies dans mes listes déroulantes se remettent sur la valeur de base et donc je dois la rentrer à nouveau.

    j'espère trouver une solution

    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (isset($_POST['go'])){
    // on récupère les données si la variable go existe
    puis le reste des contôles suit


    mais le problème vient que pour mes input text j'ai une variable qui permet de consever ce qui a été choisi lorsque ke reviens au formulaire, mais je trouve pas de solution pour les selects

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    $form = "<table>
     
     
     
    <form METHOD=\"POST\" onsubmit=return checkform(this) enctype=\"multipart/form-data\" >
     
    <table width=\"489\" border=\"1\">
      <tr>
        <td height=\"41\" bgcolor=\"#CCCCCC\">Type de Bien <font color=#FF0000><span>*</span></font></td>
      </tr>
      <tr>
        <td height=\"41\">
          <p>      
          <label for=\"type\">Type de commerce à vendre</label>
            <select name=type size=\"1\" id=\"type\" >
              <option  value=\"veuillez choisir\">Veuillez choisir</option>
              <option   value=\"commerce\" >commerce</option>
              <option  value=\"autre\" >Autre</option>
            </select><font color=#FF0000><span>*</span></font>$erreur_type</td>
     
          </p>   
      </tr>
    </table>
    <p>
     
     
     
    <table width=\"489\" border=\"1\">
      <tr>
        <td height=\"41\" bgcolor=\"#CCCCCC\">Situation <font color=#FF0000><span>*</span></font></td>
      </tr>
      <tr>
        <td height=\"41\">
          <p>
            <label for=\"pays\">Pays</label>
            <select name=pays id=\"pays\" >
              <option value=\"Belgique\" >Belgique</option>
              <option value=\"France\"  >France</option>
              <option value=\"Luxembourg\" >Luxembourg</option>
            </select><font color=#FF0000><span>*</span>$erreur_pays</font>
          </p>
          <p>Adresse de l'acivité</p>
          <p>
            <label for=\"rue\">Rue :</label>
            <input type=\"text\" name=rue value =\"$rue\"  id=\"rue\"  />$erreur_rue
     
            <label for=\"numero\">N°:</label>
              <input name=numero type=\"text\" value =\"$numero\" id=\"numero\" size=\"6\" />$erreur_numero
     
          </p>
          <p>
            <label for=\"cp\">Code Postal :</label>
              <input name=cp type=\"text\" id=\"cp\" value =\"$cp\" size=\"6\" />$erreur_cp
     
            <label for=\"commune\">Commune: </label>
            <input type=\"text\" name=commune value =\"$commune\" id=\"commune\"$erreur_commune  />
            <br />
          </p>
          </td>
      </tr>
    </table>
    <p>
     
     
    <table width=\"489\" border=\"1\">
     
         <tr>
         <td height=\"41\" bgcolor=#CCCCCC>Souhait financier <font color=#FF0000><span>*</span></font></td>
         </tr>
        <tr>
          <td height=\"121\"><p>Prix de vente des actions,parts sociales ou fonds de commerce</p>
            <p>
            <label for=\"type\">Type de Vente</label>
            <select name=type_vente size=\"1\" id=\"type\" >
              <option value=\"veuillez choisir\" >Veuillez choisir</option>
              <option value=\"action\" >Actions / parts sociales</option>
              <option value=\"fdc\" >Fonds ce commerce</option>
            </select><font color=#FF0000><span>*</span></font>$erreur_type_vente
            </p>
     
            <p>
            <label for=\"pv\">Prix de Vente :</label>
              <input type=\"text\" name=pv value =\"$pv\" id=\"pv\" ><font color=#FF0000><span>*</span>$erreur_pv
            <br />
            </p>
            </td>
        </tr>
    </table>
    <p>
     
     
     
     
    <table width=\"489\" border=\"1\">
      <tr>
        <td height=\"41\" bgcolor=#CCCCCC>Descriptions <font color=#FF0000><span>*</span></font></td>
      </tr>
      <tr>
        <td height=\"121\"><p>Description brève ( 2 à 3 lignes maximum ) <font color=#FF0000><span>*</span></font></p>
          <p>
     
            <label for=\"description_breve\"></label>
            <textarea name=description_breve id=\"description_breve\"  cols=\"45\" rows=\"5\" WRAP=\"virtual\">$description_breve</textarea>
          </p>
     
          <p>Personnel</p>
          <p>
            <label for=\"personnel\"></label>
            <textarea name=personnel id=\"personnel\" cols=\"45\" rows=\"5\" WRAP=\"virtual\" >$personnel</textarea>
            <label for=\"chiffre\"></label>
          </p>
     
          <p>Chiffres clés</p>
          <p>
            <textarea name=chiffre id=\"chiffres\"  cols=\"45\" rows=\"5\" WRAP=\"virtual\">$chiffres</textarea>
          </p>
     
          <p>Description Détailée <font color=#FF0000><span>*</span></font></p>
          <p>
            <label for=\"description détail\"></label>
            <textarea name=description_detail id=\"description_detail\"  cols=\"45\" rows=\"5\" WRAP=\"virtual\">$description_detail</textarea>
          </p>
     
          </tr>
    </table>
     
      <p>
      <table width=\"489\" border=\"1\">
        <tr>
          <td height=\"41\" bgcolor=#CCCCCC>Photos</td>
        </tr>
        <tr>
          <td height=\"121\"><p>Photo principale</p>
            <p>
              <label for=\"photo1\"></label>
              <input type=\"file\" name=photo1  id=\"photo1\" />
            </p>
            <p>vous pourrez ajouter 4 photos après confirmation</p>
            <p>
     
     
              <input type=submit name=go value=Envoyer />
              <input type=reset name=button value=Reset />
     
            </p>
     
        </tr>
      </table>
    </form>
     
     
     
    </table>";
     
    print($form);

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu dois juste ajouter l'attribut selected quand tu ecris l'option correspond a la valeur envoyé par le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $tblPays = array('Belgique', 'France', 'Luxembourg');
    echo '<select name="pays" id="pays">';
    foreach ($tblPays as $pays) {
        if (isset($_POST['pays']) && $pays == $_POST['pays']) {
             $selected = ' selected="selected" ';
        }
        else {
             $selected = '';
         }
         echo '<option value="' . $pays . $selected . '">' $pays . '</option>';
    }
    echo '</select>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour l'info je vois ou est la solution , j'ai supprimé les echo puisque je suis dans print form plus mis des /
    mais ca ne marche pas voici le nouveau code et ce que j'ai en réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <label for=\"pays\">Pays</label>
     
            $tblPays = array('Belgique', 'France', 'Luxembourg');
            <select name=\"pays\" id=\"pays\">;
            foreach ($tblPays as $pays) {
            if (isset($_POST\['pays'\]) && ($pays == $_POST\['pays'\]) {
             $selected = ' selected=\"selected\" ';
            }
        else {
             $selected = '';
             }
            <option value=\"' . $pays . $selected . '\">' $pays . '</option>;
            }
            </select>;


    Sur le navigateur ca donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     <label for="pays">Pays</label>
     
             = array('Belgique', 'France', 'Luxembourg');
            <select name="pays" id="pays">;
            foreach ( as ) {
            if (isset(Array\['pays'\]) && ( == Array\['pays'\]) {
              = ' selected="selected" ';
            }
        else {
              = '';
             }
            <option value="' .  .  . '">'  . '</option>;
            }
            </select>;
    merci pour ton aide

  4. #4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    echo et print sont presques identiques ... sauf que echo est plus rapide, en particulier pour afficher de grandes chaines de caractères justement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 416
    Points
    91 416
    Billets dans le blog
    20
    Par défaut
    Ce que ton navigateur affiche montre que manifestement, ton code est mal encadré au niveau des quotes.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Oui ca j'avais compris que c'était mal encadré

    Peut tu me dire comment encadrer les fonction : if, for, each,... dans print form pour quelles soient exécutées et pas imprimées?

    sinon un lien ou je peux trouver les règles

    merci

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 416
    Points
    91 416
    Billets dans le blog
    20
    Par défaut
    comment encadrer les fonction : if, for, each,... dans print form
    Je comprends rien... C'est quoi un print form ?

    Mais bon, sinon, pour utiliser du code PHP quand tu écris le code HTML il suffit de fermer la chaine puis de la réouvrir...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    echo '<select name="pays" id="pays">';
    if(conditon){
        echo '<option value="foo">Condition vraie</option>';
    }
    else{
        echo '<option value="bar">Condition fausse</option>';
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    si tu regardes bien, je commence par (ligne 2)


    et je termine par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    </table>";
     
    print($form);
    donc php imprime ma forme de ce fait je pense que dans ce cas il interprète mal les if , foreach,....

    je suis dans une page auto invocant. Au départ il imprime mon formulaire (form) pui il controle s' il y a des erreur. si il y en a, il réimprime le formulaire mais en gardant les données enregistrées via les variables reprises dans le formulaire. si tout est ok il enregistre dans la BD.

    Pour les "select" quand il y a une erreur meme ailleurs il réimprime le formulaire mais n'enregistre pas ce qui a été mis dans le "select". Car je n'ai pas de variable a ce niveau pour forcer un "selected".Ta solution est parfaite mais pas dans mon système car je ne parvient pas dans mon formulaire, comme tu l'as vu , a ce qu'il transforme le résultat des if ... en ligne d'instrution pour un formulaire


    j'espère que c'est plus clair

    désolé

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 416
    Points
    91 416
    Billets dans le blog
    20
    Par défaut
    Oui, mais moi ce que je t'explique, c'est que tout ce qui est entre le " d'ouverture de la chaine et le " de fermeture est considéré comme textuel, pas comme du code PHP à interpréter !
    dans ce cas il interprète mal les if , foreach
    rien à voir ! Il n'y a rien à interpréter bien ou mal puisque tout cela constitue uniquement ta chaine de caractère !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme je t'ai expliqué coppin, ta méthode "print form" n'est pas bonne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Bon j'ai changé mon formulaire avec " echo " entre parenthèse dommage que je n'ai pas eu de solution pour le "print".

    SOIT j'ai un autre soucis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'<input type="text" name="rue" value ='."$commune".'>';
    $commune est ma variable pour conserver ce que la personne a introduit si d'autres champs du formulaire sont incorrects et que le formulaire est réaffiché.

    Mais si je rentre "rue de la source" il ma me mettre simplement rue

    pouvez vous m'aider

    merci

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    PHP offre plein de manières différentes pour écrire du code proprement, cela serait bien que tu changes la tienne par une de cette liste
    Parce que mettre tout le code HTML entre guillemets n'est pas la meilleure approche qui soit...

    Ensuite tu devrais reprendre intégralement ton code parce qu'il n'est pas valide du point de vue HTML (balises mal fermées, incorrectement placées...)
    Tu ne devrais pas non plus utiliser les tableaux pour la mise en forme et essayer de séparer complètement le CSS du reste.

    Enfin, tu devrais aussi morceler la génération du HTML afin de t'y retrouver plus facilement.

    Sache que pour les clés, il est bien plus simple de gérer des entiers de type id que du texte

    Voici un début de reprise de ton code :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
     
    $types_commerces =
        function()
        {
            $data = array('Veuillez choisir', 'Commerce', 'Autre');
            $id   = (empty($_POST['type'])) ? 0 : intval($_POST['type']);
            $rows = '';
     
            if ( ! isset($data[$id])) {
                $id = 0;
            }
     
            foreach($data as $k => $v) {
                $selected  = ($k === $id) ? ' selected="selected"' : '';
                $rows     .=
    <<<HTML
    <option value="{$k}"{$selected}>{$v}</option>\n
    HTML;
            }
     
            // ici tu devrais ajouter la gestion de $erreur_type
            return
    <<<HTML
    <label for="type">Type de commerce à vendre</label>
    <select name="type" size="1" id="type">
        {$rows}
    </select>
    <font color=#FF0000><span>*</span></font>{$erreur_type}
    HTML;
        };
     
     
     
     
    ?>
    <table>
        <form method="post" onsubmit="return checkform(this)" enctype="multipart/form-data">
            <table width="489" border="1">
                <tr>
                    <td height="41" bgcolor="#CCCCCC">Type de Bien <font color=#FF0000><span>*</span></font></td>
                </tr>
                <tr>
                    <td height="41"><p><?php echo $types_commerces() ?></p></td>
                </tr>
            </table>

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci pour tes conseils
    Entre temps j'ai effectivement changé mon approche en utilisant du html pour la présentation du formulaire et j'y place du php pour les variables style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <php? echo $trucmachin ?>
    C'est plus clair et plus simple en effet

    La, je suis un peu mort mais je lirais demain ton code

    Bonne année a tous

Discussions similaires

  1. [Dojo] rajouter une liste deroulante dans un formulaire
    Par BLEITE dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 21/08/2010, 23h45
  2. lier deux liste deroulante dans un formulaire flash
    Par popogendarme dans le forum Coldfusion
    Réponses: 2
    Dernier message: 19/07/2007, 22h15
  3. Rafraichir une liste deroulante dans un formulaire
    Par hellosct1 dans le forum IHM
    Réponses: 2
    Dernier message: 09/01/2007, 21h36
  4. Liste deroulante dans formulaire
    Par Levon dans le forum Access
    Réponses: 3
    Dernier message: 22/11/2006, 14h06
  5. Réponses: 5
    Dernier message: 25/10/2005, 21h51

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