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

jQuery Discussion :

Formulaire PHP + Validation JQuery


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut Formulaire PHP + Validation JQuery
    Bonjour à tous.

    Je poste un petit problème avec mon formulaire et ma validation jquery.

    J'ai un formulaire tout ce qui est de plus basique.
    Un traitement PHP qui enregistre vers une BDD.
    Et une fonction JQUERY qui valide ou non le formulaire, précisant à l'internaute les champs qui sont vides.

    Le problème est le suivant : Lorsque tout les champs de mon formulaire sont vides, mon jquery s'active précisant les champs a remplir.
    Mais lorsque je complète un champs ben le formulaire s'enregistre dans la base de données alors qu'il y'a encore des champs vides.

    voici mon code :

    FORMULAIRE:
    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
     
    <form id="register-form" class="form" action="../controller/Inscription.php" method="POST">
                        <legend> INSCRIPTION </legend>
                                <hr>
                            <div class="body">
                                <input name="id" type="hidden">
     
                                <label>NOM</label>
                                <input name="nom" id="nom" type="text">
                               <span class="error-message"></span>
                                <label>PRENOM</label>
                                <input name="prenom" id="prenom" type="text">
                               <span class="error-message"></span>
                                <label>DATE NAISSANCE</label>
                                <input name="date_naissance" id="naissance" type="text">
                             <span class="error-message"></span>
                                <label>CODE POSTALE</label>
                                <input name="code" id="code" type="text">
                               <span class="error-message"></span>
                                <label>ADRESSE</label>
                                <input name="adresse" id="adresse" type="text">
                                <span class="error-message"></span>
                                <label>VILLE</label>
                                <input name="ville" id="ville" type="text">
                              <span class="error-message"></span>
                                <label>PAYS</label>
                                <input name="pays" id="pays" type="text">
                            <span class="error-message"></span>
                                <label>TELEPHONE</label>
                                <input name="tel" id="tel" type="text">
     
                                <label>EMAIL</label>
                                <input name="email" id="email" type="text">
                                <span class="error-message"></span>
                                <br/>
                                <label>PASSWORD</label>
                                <input name="password" id="password" type="password">
                                <span class="error-message"></span>
     
                            </div>
                                <br/>
     
                            <div class="footer">
                                <button type="submit" id="submit"  name="submit" class="btn btn-success">Enregistrer</button>
                            </div>
                    </form>
    Mon traitement PHP au niveau du modele:
    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
     
    function addMembres(membre $membre){
     
    $connexion = Connexion::getInstance(); 
     
    $sql = $connexion->prepare("INSERT INTO ps_membre(nom_membre,prenom_membre,date_naissance,cp_membre,adresse_membre,ville_membre,pays_membre,tel_membre,email_membre,password) VALUES(?,?,?,?,?,?,?,?,?,?)");
    	{
                $params = $membre->getReqParams();
                $n=1; // Nombre de paramètres 
     
                    foreach($params as $v)
                        {
                            $sql->bindValue($n,$v,PDO::PARAM_STR); 
                            echo $v; echo"<br>";
                            $n++;
                        }
    	}
            $res=$sql->execute();
            $result=$sql->fetchAll();
            return $result;
    }
    et au niveau controller pour lancer le traitement :

    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
     
    class Inscription 
    {
            public static function ajouterUnMembre(membre $membre)
            { 
                addMembres($membre);   
            }//end class
    }
     
    $password = $_POST['password'];
    $hash= crypt($password); 
     
     
    $membre = new membre(   "",
               $_POST['nom'],
               $_POST['prenom'],
               $_POST['date_naissance'],
               $_POST['code'],
               $_POST['adresse'],
               $_POST['ville'],
               $_POST['pays'],
               $_POST['tel'],
               $_POST['email'],
               $hash);    
    die;
    Inscription::ajouterUnMembre($membre);
     
    header('Location:../index.php');
    Voilà je voudrais savoir ou est mon erreur, car j'ai même mis mon instance en commentaire mais rien à faire.

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour,

    1) Où est le code JavaScript et qu'est-il sensé faire ?
    2) le forum JQuery est ici
    3) Merci de lire la charte du forum et de ne pas poster le code côté serveur. Seulement le HTML, le JS, et le CSS du navigateur, ainsi que les données éventuellement échangées par Ajax.

    Le code JavaScript de ta page n'a rien à voir avec ce qu'il se passe côté serveur. Il ne peut interagir qu'avec les données présentes dans le navigateur. Si tu passes par un échange Ajax, seul le contenu de la réponse faite par le serveur lui est accessible. La façon dont le serveur obtient ces informations n'a absolument aucune influence.

    A+JYT

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Ah oui pardon j'ai oublier de le mettre

    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
     
    jQuery(function($){
     
    $.datepicker.setDefaults( $.datepicker.regional[ "fr" ] );
    $('#naissance').datepicker({
    	dateFormat:'yy-mm-dd',
            yearRange: '1940 : 2016',
            changeYear:true, //affiche un select d'année
            firstDay:1, //affiche la date d'aujourd'hui
            //minDate: 0
            showOn: "button",
            buttonImage: "../images/calendar.png",
            buttonImageOnly: true
    });
     
    $('#dateDebut').datepicker({
    	dateFormat:'yy-mm-dd',
            firstDay:1,
            minDate: 0
    });
     
    $('#dateFin').datepicker({
    	dateFormat:'yy-mm-dd',
            firstDay:1,
            minDate: 1
    });
     
     
    	});
     
    $(function(){ 
         $("#submit").click(function(){
            valid = false; // champs bien rempli ou pas
    /**
     * VERIFICATION DU NOM
     */
       if($("#nom").val()==""){
            $("#nom").next(".error-message").fadeIn().text("Veuillez entrez votre nom");
                valid = false;        
        }else{
        $("#nom").next(".error-message").fadeout();
        } 
    /**
     * VERIFICATION DU PRENOM
     */
           if($("#prenom").val()==""){
            $("#prenom").next(".error-message").fadeIn().text("Veuillez entrez votre prenom");
                valid = false;        
        }else{
        $("#prenom").next(".error-message").fadeout();
        } 
     /**
     * VERIFICATION DE LA DATE
     */   
           if($("#naissance").val()==""){
            $("#naissance").next(".error-message").fadeIn().text("Veuillez entrez votre date de naissance");
                valid = false;        
        }else{
        $("#naissance").next(".error-message").fadeout();
        } 
      /**
     * VERIFICATION DU CODE POSTAL
     */  
           if($("#code").val()==""){
            $("#code").next(".error-message").fadeIn().text("Veuillez entrez votre code postale");
                valid = false;        
        }else{
        $("#code").next(".error-message").fadeout();
        } 
     
      /**
     * VERIFICATION DE L'ADRESSE
     */  
           if($("#adresse").val()==""){
            $("#adresse").next(".error-message").fadeIn().text("Veuillez entrez votre adresse");
                valid = false;        
        }else{
        $("#adresse").next(".error-message").fadeout();
        } 
     
       /**
     * VERIFICATION DE L'ADRESSE
     */  
           if($("#ville").val()==""){
            $("#ville").next(".error-message").fadeIn().text("Veuillez entrez votre adresse");
                valid = false;        
        }else{
        $("#ville").next(".error-message").fadeout();
        }   
     
      /**
     * VERIFICATION DU PAYS
     */  
        if($("#pays").val()==""){
            $("#pays").next(".error-message").fadeIn().text("Veuillez entrez un password");
                valid = false;        
        }else{
        $("#pays").next(".error-message").fadeout();
        } 
     
    /**
     * VERIFICATION DE L'EMAIL
     */           
        if($("#email").val()==""){
            $("#email").next(".error-message").fadeIn().text("Veuillez entrez un email");
            valid = false;
        }
        else if (!$("#email").val().match(/^[a-z0-9._-]+@[a-z0-9._-]+\.[a-z]{2,6}$/)){
            $("#email").next(".error-message").fadeIn().text("Veuillez entrez un email valide");
            valid =false;
        }
        else{
            $("#email").next(".error-message").fadeOut();
        }
     
     /**
     * VERIFICATION DU MOT DE PASSE
     */    
     
        if($("#password").val()==""){
            $("#password").next(".error-message").fadeIn().text("Veuillez entrez un password");
            valid = false;        
        }else{
        $("#password").next(".error-message").fadeout();
        }         
     
         return valid;
     
         });  
     
            });

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Alors si j'ai bien compris, pour effectuer une analyse au niveau des champs
    je devrais passer par un formulaire mais de type AJAX ??

  5. #5
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Non non tu n'est pas obligé de passer par Ajax

    ton problème vient de ta méthode.

    tu par de valid = false.
    puis tu teste le nom s'il est vide tu fais valid = false.
    puis tu teste le prenom s'il est vide tu fais valid = false.
    etc
    à chaque fois tu fais valid = false.

    Ta variable valid reste donc toujours à false.


    Ton formulaire est valide si tous les champs sont valides.
    se qui signifie qu'il est invalide si au moin un des champs est invalide.

    vu que tu teste chaque champs séquentiellement et que tu pas valif à false si le champ est invalide
    tu obtiendra le bon résulta que si tu initialise ta variable à true.
    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
    $(function(){
      $("#submit").click(function(){
        valid = true; // champs bien rempli à priori tout doit être OK
        /**
        * VERIFICATION DU NOM
        */
        if($("#nom").val()==""){
          $("#nom").next(".error-message").fadeIn().text("Veuillez entrez votre nom");
          valid = false;
        }else{
          $("#nom").next(".error-message").fadeout();
        }
        /**
        * VERIFICATION DU PRENOM
        */
        if($("#prenom").val()==""){
          $("#prenom").next(".error-message").fadeIn().text("Veuillez entrez votre prenom");
          valid = false;
        }else{
          $("#prenom").next(".error-message").fadeout();
        }
    ...
    donc audépart tu considères que le formulaire est OK valid = true.
    puis tu teste le nom s'il est vide tu fais valid = false.
    puis tu teste le prenom s'il est vide tu fais valid = false.

    au final si aucun champs est invalide la variable est restée à true.

    A+JYT

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2013
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 116
    Points : 55
    Points
    55
    Par défaut
    Donc en gros je dois tester sur une boucle ou bien essayer une autre méthode ??

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    Ta fonction doit te renvoyer true si le formulaire est bien rempli et false si il n'est pas rempli correctement.

    Ça c'est la théorie, mais comme te l'a déjà indiqué sekaijin ton contrôle renvoie toujours false.


    devYan.

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    non comme je te l'ai mis dans le code juste initialiser ta variable à true
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(function(){
      $("#submit").click(function(){
        valid = true; // champs bien rempli à priori tout doit être OK
    A+JYT

Discussions similaires

  1. [ZF 1.10] validation du formulaire côté client (Jquery/ajax?)
    Par antrax2013 dans le forum Zend_Form
    Réponses: 3
    Dernier message: 11/07/2012, 21h22
  2. Réponses: 4
    Dernier message: 21/02/2011, 00h15
  3. OnClick et validation de formulaires PHP
    Par feldi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/01/2011, 11h50
  4. Cherche Formulaire php 4 / Ext / jQuery
    Par ebadmail dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/08/2007, 15h11
  5. Réponses: 1
    Dernier message: 04/06/2006, 00h35

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