Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    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 :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    19 837
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 19 837
    Points : 26 111
    Points
    26 111

    Par défaut

    Tu dois juste ajouter l'attribut selected quand tu ecris l'option correspond a la valeur envoyé par le formulaire :
    Code :
    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>';

  3. #3
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    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 :
    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    19 837
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 19 837
    Points : 26 111
    Points
    26 111

    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.

  5. #5
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 255
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 21 255
    Points : 83 109
    Points
    83 109

    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    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
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 255
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 21 255
    Points : 83 109
    Points
    83 109

    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 :
    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
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    Par défaut

    si tu regardes bien, je commence par (ligne 2)


    et je termine par :

    Code :
    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
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 255
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : juin 2008
    Messages : 21 255
    Points : 83 109
    Points
    83 109

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    19 837
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 19 837
    Points : 26 111
    Points
    26 111

    Par défaut

    Comme je t'ai expliqué coppin, ta méthode "print form" n'est pas bonne.

  11. #11
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    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 :
    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
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 125
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 125
    Points : 7 254
    Points
    7 254

    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 :
    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>
    # Dans la Création, tout est permis mais tout n'est pas utile...

  13. #13
    Invité de passage
    Inscrit en
    décembre 2012
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : décembre 2012
    Messages : 14
    Points : 0
    Points
    0

    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 :
    <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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •