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 :

Validation d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut [Résolu] Validation d'un formulaire
    Bon OK cette question a du être posée des centaines de fois mais après 2 jours de tentatives et de passage d'un site à un autre, je craque et demande de l'aide.
    Je travaille actuellement sur un formulaire pas super compliqué (je le construis avec dreamweaver j'avoue) mais je n'arrive pas à faire un truc sans doute simple c la vérification du formulaire avant l'insertion dans la base de donnée.
    Je vous mets ici en exemple ce que j'arrive à écrire mais qui ne fonctionne pas et je ne sais pas why. pour écrire tout ça je me suis servi des différents sites que j'ai lu. Mon formulaire exemple comprend :
    - 4 champs texte dont 1 email donc il faut vérifier que l'adresse est correctement écrite
    - 1 liste - menu ms pas de vérif spéciale à faire car la personne peut ne pas répondre si elle veut
    - 1 case-à-cocher qu'il faudrait vérifier aussi
    voici donc mon 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
    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
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
    <?php require_once('Connections/connquestionnaire.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO questionnaire (sexe, age, nationalite, ville_residence, note_eau, aimer_milkshake, email) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['sexe'], "text"),
                           GetSQLValueString($_POST['age'], "text"),
                           GetSQLValueString($_POST['nationalité'], "text"),
                           GetSQLValueString($_POST['villeresidence'], "text"),
                           GetSQLValueString($_POST['eau'], "text"),
                           GetSQLValueString($_POST['aimer_milkshake'], "text"),
                           GetSQLValueString($_POST['email'], "text"));
     
      mysql_select_db($database_connquestionnaire, $connquestionnaire);
      $Result1 = mysql_query($insertSQL, $connquestionnaire) or die(mysql_error());
    }
     
    mysql_select_db($database_connquestionnaire, $connquestionnaire);
    $query_Recordset1 = "SELECT * FROM questionnaire";
    $Recordset1 = mysql_query($query_Recordset1, $connquestionnaire) or die(mysql_error());
    $row_Recordset1 = mysql_fetch_assoc($Recordset1);
    $totalRows_Recordset1 = mysql_num_rows($Recordset1);
    ?>
    <?php
    /**
     * On commence par vérifier si le bouton soumettant le formulaire a été
     * cliqué, "envoi" étant l'attribut "name" du bouton "submit"
      */
    if(isset($_POST['envoi']))
    {
        /* Récupération des données du formulaire */
    	$sexe      = isset($_POST['sexe'])      ? $_POST['sexe']            : "";
        $age    = isset($_POST['age'])    ? trim($_POST['age'])    : "";
        $nationalite       = isset($_POST['nationalite'])       ? trim($_POST['nationalite'])       : "";
        $villeresidence = isset($_POST['villeresidence']) ? trim($_POST['villeresidence']) : "";
        $aimer_milkshake      = isset($_POST['aimer_milkshake'])      ? $_POST['aimer_milkshake']            : "";
    	$email     = isset($_POST['email'])     ? trim($_POST['email'])     : "";
    	$eau       = isset($_POST['eau'])       ? $_POST['eau']             : "";
     
        /**
         * Définition des variables servant au traitement de l'adresse électronique: on utilise ici des expressions régulières.
         */
        $valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
     
        /**
         * Traitement de vérification des champs vides ou invalides (email)
         * Conditions de mauvaises réponses (champ vide par exemple)
         */
     
        if ($age == '' || $nationalite == '' || $villeresidence == '' || $email == '' || !(preg_match($valid, $email)))
        {
            /* Action à adopter */
     
            if ($age == '')
            {
                /* Si le champ "age" est vide, */
                print "<p>Vous n'avez pas précisé votre âge</p>\n";
            }
            if ($nationalite == '')
            {
                /* Si le champ "nationalite" est vide, */
                print "<p>Vous n'avez pas précisé votre nationalité</p>\n";
            }
    		 if ($villeresidence == '')
            {
                /* Si le champ "villeresidence" est vide, */
                print "<p>Vous n'avez pas précisé votre ville de résidence</p>\n";
            }
            if(!$email)
            {
                /* Si le champ "adresse électronique" est vide, */
                print "<p>Vous avez omis de mentionner une adresse électronique !</p>\n";
            }
            if(($email) && !(preg_match($valid, $email))) /* Si il y a une adresse inscrite mais invalide */
            {
                /* On vérifie LES DEUX conditions réunies (avec le sugne "&&"): si on ne vérifie que la validité, en ne
                mettant pas d'adresse dans le formulaire, on obtient l'affichage des deux messages, or l'adresse à
                ce moment là n'est pas invalide, elle est absente: le message d'invalidité ne s'applique donc pas. */
                print "<p>L'adresse électronique saisie est invalide.</p>\n";
            }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test validation du formulaire</title>
    </head>
     
    <body>
    <form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
    <p class="titre">Informations personnelles</p>
    <fieldset id="informationspersonnelles">
    <p id="sexe"><label>Sexe : </label>
    <input type="radio" name="sexe" value="homme"/>Homme<br />
    <input type="radio" name="sexe" value="femme" />Femme</p>
    <label>Age : </label>
    <input name="age" type="text" id="age" size="30" />
    <br />
    <label>Nationalité : </label>
    <input name="nationalité" type="text" id="nationalité" size="30" />
    <br />
    <label>Ville de résidence : </label>
    <input name="villeresidence" type="text" id="villeresidence" size="30" />
    <br />
    </fieldset>
    <p class="titre">Donnez une note de 1 à 10</p>
    <fieldset id="noterafraichissement">
    <label>Eau :
    <select name="eau"> 
    <option value="0" selected="selected"></option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    </select>
    </fieldset>
    <p class="titre">Milkshake</p>
    <fieldset id="milkshake">
    <p id="aimer_milkshake"><label>Aimez-vous les milkshakes ?</label>
    <br /><br />
    <input name="aimer_milkshake" type="radio" value="beaucoup"/>Beaucoup
    <br />
    <input type="radio" name="aimer_milkshake" value="assez" />Assez
    <br />
    <input type="radio" name="aimer_milkshake" value="pastrop"/>Pas trop
    <br />
    <input type="radio" name="aimer_milkshake" value="pasdutout" />Pas du tout</p>
    </fieldset>
    <p class="titre">Si vous voulez suivre ce projet, laissez-nous votre email :</p>
    <fieldset id="email">
    <label>Email : </label>
    <input name="email" type="text" id="email" size="30" />
    </fieldset><br />
    <input type="submit" class="verif" name="envoi" value="Envoyer" />
    <input type="hidden" name="MM_insert" value="form1" />
    </form>
    </body>
    </html>
    <?php
    mysql_free_result($Recordset1);
    ?>
    Qu'est-ce qui cloche ds ce code?
    Dois-je faire une vérif php ou javascript? et quelle est la différence des 2 ?

    merci d'avance pour votre aide

  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
    Qu'est-ce qui cloche ds ce code?
    Peut etre devrais-tu commencer par nous dire ce qui ne fonctionne pas.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    et bien j'ai une erreur

    Parse error: parse error in B:\wamp\www\ShakeMe\test.php on line 181
    mais je n'ai pas de ligne 181 c'est ça le plus drôle

  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
    Tu as bien 181 lignes et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_POST['envoi']))
    {
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        if ($age == '' || $nationalite == '' || $villeresidence == '' || $email == '' || !(preg_match($valid, $email)))
        {
    ne sont pas fermés

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    merci merci car en effet, le fait de fermer les "if" permet bien l'affichage du formulaire.
    par contre si je ne remplis pas un des champs, je n'ai pas de message d'erreur qui s'affiche (genre pop-up).
    Par exemple si je ne remplis aucun champ et que je clique sur mon bouton Envoyer j'ai les messages suivants:
    Notice: Undefined index: sexe in B:\wamp\www\ShakeMe\test.php on line 39
    Notice: Undefined index: aimer_milkshake in B:\wamp\www\ShakeMe\test.php on line 44
    Column 'sexe' cannot be null
    pour retourner au formulaire je dois alors faire précédent.

    ce que je voudrais c'est que quand je clique sur "Envoyer" le formulaire soit vérifié et que si un des champs n'est pas rempli j'ai un message (format pop-up ou autre)

    merci encore pour ton aide

    PS. comme tu peux le comprendre je suis débutant dans tout ça

  6. #6
    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 peux faire les deux : verification immediate en javascript au moment de la soumission du formulaire et verification en PHP au moment de la reception du formulaire.

    Regarde cependant ton script actuel : tes verifications des champs vides est faite apres l'insertion dans la base.

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Ca veut dire qu'il manque qque chose à mon script ou que je dois le déplacer?
    sinon le script en lui même est-il correct?

    merci encore

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Tu peux faire les deux : verification immediate en javascript au moment de la soumission du formulaire et verification en PHP au moment de la reception du formulaire.
    Regarde dans la Faq javascript delros:
    http://javascript.developpez.com/faq...s#ControleForm

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    Regarde dans la Faq javascript delros:
    http://javascript.developpez.com/faq...s#ControleForm
    Merci beaucoup pour ce lien fort utile. Grâce à lui j'ai pu bien avancer dans la partie vérification javascript pour les champs texte mais :
    - pourrais-tu me dire comment on fait pour vérifier qu'un bouton radio a bien été sélectionné et qu'une des valeurs de la liste a bien été sélectionnée?
    - de même mon interrogation première sur la validité de mon script de vérification php reste toujours présente; càd est-ce que le script que j'ai écris est bon et pourquoi sabotage me dit-il: "Regarde cependant ton script actuel : tes vérifications des champs vides est faite après l'insertion dans la base"?

    merci encore il parait que c'est en forgeant qu'on devient forgeron.

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Pour vérifier si un bouton radio est coché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var a=false;
    for(var i=0; i<=document.getElementsByName("NameRadio").length;i++)
    {
      if(document.getElementsByName("NameRadio").checked)
        {
            a=true;
        }
    }
    if(!a){alert('Aucun choix n\'est Effectue')};
    Pour le remarque de sabotage, tu dois mettre les testes dans le block if(isset($_POST['envoie'])) qui teste les valeurs postées avant la requête de l'insertion pour vérifier si les champs obligatoire ne sont pas vides avant d'insérer.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci merci bcp pour vos différentes aides.
    Avec tout ça j'ai pu m'en sortir. Vraiment merci. C'est quand même cool de pouvoir profiter des savoirs des autres quand on est dans la merd*.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2006, 09h42
  2. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46
  3. Ouvrir une popup lors de la validation d'un formulaire
    Par pod1978 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2005, 15h47
  4. Vérification de validation d'un formulaire
    Par tom06440 dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2005, 14h29
  5. Réponses: 11
    Dernier message: 16/09/2004, 11h39

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