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 des données d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Vérification des données d'un formulaire
    Bonjour,

    J'essaie de créer un formulaire qui vérifie si l'utilisateur a bien entré les champs demandés mais ça ne marche pas. Mon code est le 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
    <html>
    <head>
    <title>formulaire</title>
    <head>
    <body>
    <form name="formulaire" method="post" action="insert.php">
    <TABLE BORDER=0>
    <TR>
    	<TD>Nom</TD>
    	<TD>
    	<INPUT type="text" name="nom">
    	</TD>
    </TR>
    </TABLE>
    </FORM>
    </body>
    </html>
    Et la page index.php :

    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
    <?php
    $nom = $_POST['nom'];
    function taille_variable($nom,$taille_min=1,$taille_max=10){
    global $_POST;
    if(!isset($_POST['$nom'])){
    // valeur non définie
    return false;
    }elseif (strlen($_POST['$nom'])<'$taille_min'){
    return False;
    }elseif(strlen($_POST['$nom'])>'$taille_max'){
    return FALSE;
    }
    return True;
    }
    mysql_connect('localhost','root','') or die ("erreur de connexion");
    mysql_select_db('base') or die ("erreur de connexion base");
    mysql_query("INSERT INTO liste VALUES ('','$nom')");
    mysql_close();
    ?>
    Qu'est-ce qui cloche ? Merci.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    A ta place j'utiliserai du Java script et je limiterai, en html, ton input avec : . Sinon en regardant ton code peut-etre qu'écrire false avec des majuscules ne fonctionne pas. Et aussi dans ton forme tu veux que cela aille a insert.php et ta page tu l'as nomme index.php
    Kévin

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    }elseif (strlen($_POST['$nom'])<'$taille_min'){
     
    }elseif(strlen($_POST['$nom'])>'$taille_max'){
    Le problème vient de là. Supprimer les quote autour des variable sinon, php ne va pas regarder leurs valeurs, mais les considérés comme chaîne de caractères

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    J'ai enlevé les quote et mis false en minuscules mais ça ne marche toujours pas...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Tiens essaies sa pour le php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $connexion = mysql_pconnect('localhost','root','') or die ("erreur de connexion");
    mysql_select_db("base",$connexion) or die ("erreur de connexion base");
    if(isset($_POST['nom']) && !empty($_POST['nom'])){
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
    }
    mysql_query("INSERT INTO liste VALUES ('','$nom')");
    mysql_close();
    ?>
    Et pour le html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <INPUT type="text" name="nom" maxlength="10">
    Dis moi si cela marche. Je ne garantie rien.
    Kévin

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Non, hélas ça n'a pas l'air de marcher...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    J'ai essayé d'une autre façon, en insérant du javascript dans le head de ma page html mais ça n'a pas l'air de marcher non plus. Est-ce que quelqu'un voit l'erreur ?

    Code HTML : 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
    <html>
    <head>
    <title>formulaire</title>
    <script type="text/javascript" language}"javascript">
    <!function verification()
    {if(document.formulaire.nom.value==""){
    document.formulaire.nom.focus();
    return false;
    }
    else
    return true;
    }
    //>
    </script>
    <head>
    <body>
    <form name="formulaire" method="post" action="insert8.php">
    <TABLE BORDER=0>
    <TR>
    	<TD>Nom</TD>
    	<TD>
    	<INPUT type="text" name="nom" maxlength="10">
    	</TD>
    </TR>
    </TABLE>
    <input type="submit" name="submit" value="inserer">
    </FORM>
    </body>
    </html>

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Enre regardant ton code vite fait tu as fait plein d'erreur de frappe: tu as mis } au lieu de = dans la déclaration du script. Enuiste ta balise head n'est pas fermé. Pour ce qui est de la fonction je te dis sa tout a l'heure et le php aussi car ce que je t'ai donné fonctionne.
    Kévin

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Donc voila ce que je te propose : pour le html :
    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
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>formulaire</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="formulaire.js" type="text/javascript"></script>
    </head>
    <body>
    <form name="formulaire" method="post" action="insert8.php" onsubmit="return verif();">
    <table border=0>
    <tr>
    	<td>Nom</td>
    	<td>
    	<input type="text" name="nom" id="nom" maxlength="10" />
    	</td>
    </tr>
    </table>
    <input type="submit" name="submit" value="inserer" />
    </form>
    </body>
    </html>
    Pour le php que tu appelles insert8.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $connexion = mysql_pconnect('localhost','root','') or die ("erreur de connexion");
    mysql_select_db("base",$connexion) or die ("erreur de connexion base");
    if(isset($_POST['nom']) && !empty($_POST['nom'])){
    $nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
    }
    mysql_query("INSERT INTO liste VALUES ('','$nom')");
    mysql_close();
    ?>
    Et le Java script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function verif()
    {
      if(document.getElementById('nom').value == "")
      {
        alert("Le champ doit etre rempli.");
        return false;
      }else
      {
        return true;
      }
    }
    que tu enregistres sous formulaire.js.
    Normalement tout devrait fonctionner.
    Kévin

  10. #10
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    hello

    Je changerais ces éléments :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }elseif (strlen($_POST['$nom'])<'$taille_min'){
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    }elseif (strlen($_POST['nom']) < $taille_min){
    --> $_POST['nom'] : sans le $, ce n'est une variable c'est l'index POST nom.
    --> enlever les quotes autour de $taille_min car les variables entre quotes ne sont pas interprétées.

    Fait de même pout tout ton code (fonction)

    Ensuite on verra...
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Merci pour ce code. Effectivement il marche. Par contre, j'ai enlevé le $ et les quote mais ça veut pas marcher :-(

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 302
    Points : 141
    Points
    141
    Par défaut
    Ba utilises alors mon code car tu n'as pas besoin des trucs qui ne fonctionnent pas. Et pas de soucis pour l'aide.
    Kévin

  13. #13
    Expert éminent
    Avatar de 12monkeys
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2006
    Messages : 4 093
    Points : 9 031
    Points
    9 031
    Par défaut
    Hello,

    Tu ne fait pas appel à ta fonction dans ton code : tu la déclare, mais sans y faire appel. Egalement : est ce normal que dans ton formulaire tu n'ai pas de bouton de soumission ?

    Mais bon ce n'est pas tout car j'ai essayé de faire fonctionner ton code hier soir pendant au moins 20 minutes sans succès...

    Il est en général déconseillé de faire les vérifications d'un formulaire uniquement en javascript : que se passe t'il si la personne a désactivé le javascript !

    Pourquoi une fonction ? Il y a plus simple, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (empty($nom_form_ann)) {
        $err_vide[] = "Le champ de saisie nommé <em>'Nom'</em> est vide, ce champ est à remplir obligatoirement.\n";
    }
     
    if (empty($err_vide)) {
        //execution de ton code...
    }
    Vous souhaitez participer à la rubrique (X)HTML/CSS, contactez moi.
    débutez avec les CSS
    Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
    Votez pour les messages qui vous ont aidés...

Discussions similaires

  1. [DREAMWEAVER8] Envoyer des données d'un formulaire sur mail
    Par steeves5 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/02/2006, 18h15
  2. Réponses: 6
    Dernier message: 15/02/2006, 14h02
  3. Récupération des données d'un formulaire
    Par placenargac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/02/2006, 15h10
  4. Avis sur la vérification des données d'une fiche
    Par AlexB59 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/07/2005, 20h55
  5. [ JSP ] Réaffichage des données d'un formulaire apres un ret
    Par captainpouet dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/04/2004, 11h55

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