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 :

Vérification de champ avec message erreur


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut Vérification de champ avec message erreur
    Bonjour

    J'essaie depuis 2 jours de faire un formulaire avec un contrôle sur chaque champ avec un message d'erreur distinct pour chacun d'eux.

    J'arrive à faire un contrôle pour tous les champs avec un message d'erreur mais dès que j'isole , ca ne marche plus.

    Si quelqu'un pourrais m'aider ?

    Merci

    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
    <html>
     
    <head>
    <title>Formulaire de TEST</title>
    </head>
     
    <?php 
    //Valeurs du serveur SQL
    $host = '127.0.0.1'; 
    $user = 'root'; 
    $pass = 'admin'; 
     
     
     
    //Si l'action de validation a été faite
    if(isset($_POST["Valider"]))
    {
     
        // On récupère les valeurs du formulaire
        $societe = $_POST ['societe']; 
        $nom = $_POST['nom']; 
        $prenom = $_POST['prenom']; 
        $email = $_POST['email']; 
        $telephone = $_POST['telephone']; 
     
        //on vérifie les champs pour voir si ils ne sont pas vides
        if(empty($societe) && empty($nom) && empty($prenom) && empty($email) && empty($telephone)) {
            $alerte ='<p style="color:#ff0000;">Info manquante.</p>';
        } else{
     
            // on se connecte à la base de données
            $link=mysql_connect ($host,$user,$pass);
            if (!$link) {
                die ('Erreur de connection au serveur '.mysql_error() ) ;
            }
     
            $db=mysql_select_db('Stammtisch');
    		if (!$db) 
    		{
    			die ('Impossible de sélectionner la base de données : ' . mysql_error());
    		}
     
    		// on enregistre les valeurs
            $table=mysql_query("insert into inscriptions (societe, nom, prenom, email, telephone) values ( '$societe' , '$nom' , '$prenom' , '$email' , '$telephone');");
     
            //Si il y a une erreur
            if (!$table) {
                die('<p style="color:#ff0000;">Requête invalide :</p>' . mysql_error());
            }
            else {
                $alerte1 ='<p style="color:#ff0000;">SUCCES.</p>';
            }  
     
        }
    }
     
    ?> 
     
    <body bgcolor="#000000"> 
    <center><img border="0" src="IMAGE.jpg" width="422" height="212"></font><table border="1" width="588" cellspacing="0" cellpadding="0"><br><br>
    <form id="formulaire" action="index2.php" method="post"/>
     
     
     
       <p><font color="#FFFFFF">Société:</font><br/>
        <input name="societe" size="22" value="" type="text"/>
       </p>
     
       <p><font color="#FFFFFF">Nom:</font><br/>
        <input name="nom" size="22" value="" type="text"/>
       </p>
     
      <p><font color="#FFFFFF">Prénom:</font><br/>
       <input name="prenom" size="22" value="" type="text"/>
      </p>
     
        <p><font color="#FFFFFF">Email:</font><br/>
       <input name="email" size="22" value="" type="text"/>
      </p>
     
        <p><font color="#FFFFFF">Téléphone:</font><br/>
       <input name="telephone" size="22" value="" type="text"/>
      </p>
     
       <input name="Valider" value="Valider" type="submit"/>
       <input name="Effacer" value="Effacer" type="reset"/>
     
        <?php 
        echo $alerte;
        echo $alerte1;    
        ?>
     
    </form>
    </center>
    </body>
    </html>

  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
    Montre nous plutôt le code qui ne fonctionne pas qu'on puisse te dire ce que tu as mal écrit.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    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
    if (empty($_POST['societe']) ) {
            $Erreur_societe = '<p style="color:#ff0000;">Société manquante.</p>';
        } elseif 
            (empty($_POST['nom']) ) {
            $Erreur_nom = '<p style="color:#ff0000;">Nom manquant.</p>';
        } elseif 
            (empty($_POST['prenom']) ) {
            $Erreur_prenom = '<p style="color:#ff0000;">Prénom manquant.</p>';
        } elseif 
            (empty($_POST['email']) ) {
            $Erreur_email = '<p style="color:#ff0000;">Email manquante.</p>';
        } elseif 
            (empty($_POST['telephone']) ) {
            $Erreur_telephone = '<p style="color:#ff0000;">Téléphone manquant.</p>';
     
        } else{
          $alerte99 ='<p style="color:#ff0000;">SUCCES.</p>';
            }
    avec plus bas en dessous du formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
        echo $Erreur_societe;
        echo $Erreur_nom;
        echo $Erreur_prenom;
        echo $Erreur_email;
        echo $Erreur_telephone;
        echo $alerte99;    
        ?>
    J'ai bien l'affichage de "SUCCES" quand je remplis tous les champs.

    Le message d'erreur s'affiche pour chaque champ (testé aléatoirement) mais je voudrais que les message s'affiche tous.

    si je remplis rien , je veux tous les messages.

    Autre soucis ,quand je clique sur ''valider'' ca me contrôle mais ca efface les champs déjà remplis :-(

    Merci

  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
    Ton bloc if/elseif passe les instructions une par une et traite la première qui est vrai.
    Il te faut des if pour chaque cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Ok ca fonctionne maintenant et je comprend pourquoi grâce à ton explication.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (empty($_POST['societe']) ) {
            $Erreur_societe = '<span class="erreur">Société manquante.';
        }
    Et cela à chaque champ.

    Par contre j'ai le soucis que si l'erreur s'affiche , les champs remplis s'effacent ( assez contraignant )

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    j'ai rajouter ceci dans le HTML et ca à l'air de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input name="societe" size="22" value="<?echo $societe?>" type="text"/><br />
        <?php echo $Erreur_societe;?>
    Sauf que maintenant , mon bouton effacer n'efface plus rien ...

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai réussi , le bouton effacer fonctionne si on ne valide pas.

    Si on valide , ca affiche un message au dessus du formulaire one ne paut pas effacer les données.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (($societe <> "") && ($nom <> "") && ($prenom <> "") && ($email <> "") && ($telephone <> ""))
           {
           $succes = '<span class="succes">Merci de votre inscription.';
    avec devant le code du formulaire :



    J'aimerais que le formulaire disparaisse une fois valider ... une idée ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Je reposte le code complet pour plus de clarté. ( j'y est ajouter des contrôles email et telephone )

    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
    <html>
     
    <head>
    <title>Formulaire de TEST</title>
    <link href="styles.css" media="all" rel="stylesheet" type="text/css" />
     
    </head>
     
    <?php 
    //Valeurs du serveur SQL
    $host = '127.0.0.1'; 
    $user = 'root'; 
    $pass = 'admin'; 
     
     
     
    //Si l'action de validation a été faite
    if(isset($_POST["Valider"]))
    {
     
        // On récupère les valeurs du formulaire
        $societe = strtoupper($_POST ['societe']); 
        $nom = strtoupper($_POST['nom']); 
        $prenom = $_POST['prenom']; 
        $email = $_POST['email']; 
        $telephone = $_POST['telephone'];
     
            //on vérifie les champs pour voir si ils ne sont pas vides
        if (empty($_POST['societe']) ) {
            $Erreur_societe = '<span class="erreur">Société manquante.';
        }
        if 
            (empty($_POST['nom']) ) {
            $Erreur_nom = '<span class="erreur">Nom manquant.';
        }
        if 
            (empty($_POST['prenom']) ) {
            $Erreur_prenom = '<span class="erreur">Prénom manquant.';
        } 
        if 
            (empty($_POST['email']) ) 
            {
            $Erreur_email = '<span class="erreur">Email manquante.';
            } 
            elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$_POST["email"]))
            {
            $Erreur_email1 = '<span class="erreur">Email invalide (@).';
            }
        if 
            (empty($_POST['telephone']) ) 
            {
            $Erreur_telephone = '<span class="erreur">Téléphone manquant.';
            }
            elseif (!eregi("0[0-9]{9}",$_POST["telephone"]))
            {
            $Erreur_telephone1 = '<span class="erreur">Téléphone invalide (0xxxxxxxxx).';
            }
     
        else{
     
            } 
     
        // si tout les champs sont remplis (non vides), on continue.
        if (($societe <> "") && ($nom <> "") && ($prenom <> "") && ($email <> "") && ($telephone <> ""))
        {
     
     
            // on se connecte au serveur
            $link=mysql_connect ($host,$user,$pass);
            if (!$link) {
                die ('Erreur de connection au serveur '.mysql_error() ) ;
            }
     
            // on se connecte à la base de données
            $db=mysql_select_db('Stammtisch');
    		if (!$db) 
    		{
    			die ('Impossible de sélectionner la base de données : ' . mysql_error());
    		}
     
    		// on enregistre les valeurs
            $table=mysql_query("insert into inscriptions (societe, nom, prenom, email, telephone) values ( '$societe' , '$nom' , '$prenom' , '$email' , '$telephone');");
     
            //Si il y a une erreur
            if (!$table) {
                die('<p style="color:#ff0000;">Requête invalide :</p>' . mysql_error());
            }
            else
                {
                $succes = '<span class="succes">Merci de votre inscription.';         
                }
        } 
    }  
     
     
     
     
     
    ?> 
     
    <body> 
    <center><img border="0" src="IMAGE.jpg" width="422" height="72"></font><table border="1" width="588" cellspacing="0" cellpadding="0"><br><br>
     
     
        <?php echo $succes; ?>
     
     
    <form id="formulaire" action="index.php" method="post"/> 
       <p><font color="#FFFFFF">Société:</font>
        <input name="societe" size="22" value="<?echo $societe;?>" type="text"/><br />
        <?php echo $Erreur_societe;?>
       </p>
     
       <p><font color="#FFFFFF">Nom:</font>
        <input name="nom" size="22" value="<?echo $nom;?>" type="text"/><br />
        <?php echo $Erreur_nom;?>
       </p>
     
      <p><font color="#FFFFFF">Prénom:</font>
       <input name="prenom" size="22" value="<?echo $prenom;?>" type="text"/><br />
        <?php echo $Erreur_prenom;?>
      </p>
     
        <p><font color="#FFFFFF">Email:</font>
       <input name="email" size="22" value="<?echo $email;?>" type="text"/><br />
        <?php echo $Erreur_email; echo $Erreur_email1;?>
      </p>
     
        <p><font color="#FFFFFF">Téléphone:</font>
       <input name="telephone" size="22" value="<?echo $telephone;?>" type="text"/><br />
        <?php echo $Erreur_telephone; echo $Erreur_telephone1; ?>
      </p>
     
        <br />
     
       <input name="Valider" value="Valider" type="submit"/>
       <input name="Effacer" value="Effacer" type="reset"/>
     
     
     
    </form>
    </center>
    </body>
    </html>
    Je cherche toujours à afficher le message de Succès en retirant le formulaire.
    Et également de ne pas envoyer dans la base si il y a erreur sur l'email.

  9. #9
    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
    - eregi est une fonction obsolète
    - "différent de" s'écrit != et pas <>
    - Tu fais deux fois le test chaine vide, une fois avec empty() et une fois avec <> ""
    - Tu ne protèges pas ta requêtes contre les injections SQL
    - ton <span> sur succès n'est pas fermé.
    - tu as un <table> qui n'est pas fermé et qui ne sert à rien puisqu'il n'y a pas de cellules dedans

    Pour ton cas "succès" tu as seulement à faire un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if (isset($succes)) {
       echo $succes;
    }
    else {
       .....
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Ok je supprime le <table> et ferme les <span>

    "différent de" s'écrit != et pas <> , je dois donc mettre ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (($societe != "") && ($nom != "") && ($prenom != "") && ($email != "") && ($telephone != ""))
    Je remplace eregi par preg_match
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    elseif (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
            {
                $Erreur_email1 = '<span class="erreur">Email invalide (@).</span>';
            }
    Par contre meme si l'email est invalide , ca envoie à la BDD...
    Je suppose que je dois mettre un contrôle comme un preg match true or false ...

  11. #11
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 8
    Points
    8
    Par défaut
    Code à alléger encore mais ca fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (($societe != "") && ($nom != "") && ($prenom != "") && ($email != "") && ($telephone != "") && preg_match("#^0[1-9][0-9]{8}$#", $telephone) && preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
    Idem pour effacer le formulaire et indiquer juste le message de Succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if($succes !=""){ echo $succes;die("</center></body></html>");} ?>

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

Discussions similaires

  1. [AC-2010] Champ null message d'erreur #Taille! avec Nz
    Par SBIBobinette dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/03/2014, 22h48
  2. requête sql avec message erreur
    Par wiski08000 dans le forum Débuter
    Réponses: 4
    Dernier message: 04/01/2014, 11h19
  3. [JDOM] Vérification des champs avec JDOM
    Par fruwen7 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 03/10/2012, 17h29
  4. [RegEx] Vérification du champ avec caractères arabes
    Par seksaki dans le forum Langage
    Réponses: 2
    Dernier message: 13/09/2010, 16h16
  5. Problème avec message erreur
    Par Udani dans le forum MATLAB
    Réponses: 10
    Dernier message: 21/12/2009, 06h58

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