Partage
  • Partager sur Facebook
  • Partager sur Twitter

Window location après validation de champs

    29 décembre 2014 à 17:43:43

    Bonjour, je suis débutant en php et j'aurais besoin de votre aide.

    J'ai créé un formulaire avec 3 input (code postal, pays, email) qui sont redirigé vers un fichier php qui ecrit ensuite les donnée sur un fichier.txt par le biais de  "fputs".

    J'aimerai une fois que ces 3 champs soient remplis et uniquement s'ils sont remplis l'utilisateur soit redirigé vers une page, comment faire? 

    Voici mon code +script.

    <div id="inscription">
    
        <div class="form-input"><input id="pays" type="text" value="" placeholder="Postcode" style="color: #FFF;"/></div>
    
                <div class="form-input"><input id="country" type="text" value="" placeholder="Pays" style="color: #FFF;"/></div>
    
        <div class="form-input"><input id="mail" type="text" value="" placeholder="Email" style="color: #FFF;"/></div>
    
                <div id="send"><p>send</p></div>
    
    </div>



    <script>
    
    $(document).ready(function() {
    
    $("#send").click(function(){
    
             var mail = document.getElementById("mail").value;
    
             var afficheur = mail;
    
             var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
    
             if(reg.test(afficheur))
    
             {
    
                 $.ajax({
    
                     type: "POST",
    
                     url: "http://www.mongroupe.com/live/php/mail.php",
    
                     data: 'mail='+mail
    
                 });
    
                
    
                 $('#mail').val("thank you");}
    
             else{
    
             $('#mail').val("wrong mail");}
    
     
    
     
    
     var pays = document.getElementById("pays").value;
    
             var afficheur = pays;
    
             var reg = new RegExp(/^-?\d+\.?\d*$/);
    
             if(reg.test(afficheur))
    
             {
    
                 $.ajax({
    
                     type: "POST",
    
                     url: "http://www.mongroupe.com/live/php/mail.php",
    
                     data: 'pays='+pays
    
                 });
    
                
    
                 $('#pays').val("thank you");}
    
             else{
    
             $('#pays').val("Only numbers");}
    
     
    
     
    
    var country = document.getElementById("country").value;
    
             var afficheur = country;
    
             var reg = new RegExp("^[a-zA-Z0-9]+$", "g");  
    
             if(reg.test(afficheur))
    
             {
    
                 $.ajax({
    
                     type: "POST",
    
                     url: "http://www.mongroupe.com/live/php/mail.php",
    
                     data: 'country='+country
    
                 });
    
                
    
                 $('#country').val("thank you");}
    
             else{$('#country').val("wrong");}
    
     
    
    });
    
    });
    
    </script>



    Je souhaiterais que si Pays + country + pays sont remplis, l'utilisateur soit redirigé vers www.mongroupe.com/telechargement 

    Merci d'avance pour votre aide ! 

    -
    Edité par Victorglad 29 décembre 2014 à 17:49:55

    • Partager sur Facebook
    • Partager sur Twitter
      30 décembre 2014 à 10:01:34

      Bonjour,

      Ton code est juste mais absolument pas optimiser, tu n'a pas besoin de faire 3 appel ajax, un seul suffit.

      Je t'écrit un bout de code pour remplacer celui que tu as. Il est bien sur pas parfait et je l'ai pas tester, mais ça devrait te mettre sur la piste pour faire ce que tu souhaite

          <script type="application/javascript">
      
      
      		var mail = document.getElementById("mail").value;
       
       
               var regMail = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
      
      
       		 var pays = document.getElementById("pays").value;
       
       
               var regPays = new RegExp(/^-?\d+\.?\d*$/);
      
      
      	    var country = document.getElementById("country").value;
       
       
               var regCountry = new RegExp("^[a-zA-Z0-9]+$", "g"); 
       
       		
               var formNonRempli = false; //boolean si le form est pas complement remplie
      		 var formMalRempli = false;	//boolean si le form est pas correctement remplie
               //pour tester en live si tes variable ne sont pas vide
               if(mail != '' && pays != '' && country != ''){	//si tous les champs sont non vide
               	formNonRempli = true;
               }
               else if(regMail.test(mail) && regPays.test(pays) && regCountry.test(country)){ //si tous les regex sont ok
               	formMalRempli = true;
               }
      
       		 /*si le form est bien rempli et non vide //  sinon on afficher un message d'erreur*/
               if(formNonRempli && formMalRempli ) 
               {
       
                   $.ajax({
       
                       type: "POST",
       
                       url: "http://www.mongroupe.com/live/php/mail.php",
       
                       data: 'mail='+mail+'pays='+pays+'country='+country,
      
                       success : function(rep){
                       	//rep est la réponse renvoyer par php sous forme d'echo
                       	alert('message envoyé');
                       }
       
                   });
       
        		}
        		else{
        			if(!formNonRempli){
        				alert("Un champs est vide !")
        			}
        			else if{
        				alert("Un champs est mal rempli !")  				
        			}	
        			else{
        				alert("Problème sur le formulaire, veuillez recommencez")
        			}
        		}
       
        
      
      
               </script>


      .

      -
      Edité par OrcusZ 30 décembre 2014 à 10:02:01

      • Partager sur Facebook
      • Partager sur Twitter
        30 décembre 2014 à 11:40:40

        Merci pour ta réponse OrcusZ, 

        je dois bien mettre ce code après mon

        $("#send").click(function(){ ??

        car la ca ne fait plus rien et n'envoie pas les données dans mon fichier .txt. 

        Merci encore pour ton aide. 

        • Partager sur Facebook
        • Partager sur Twitter
          30 décembre 2014 à 11:42:08

          Re,

          Oui bien sur, car cette méthode est l’événement de ton bouton.

          juste le contenu de

          $("#send").click(function(){ ??


          change :)

          • Partager sur Facebook
          • Partager sur Twitter
            30 décembre 2014 à 11:42:45

            Le code me done une erreur au niveau des else et je ne vois pas laquelle c'est. 

             else{
                    if(!formNonRempli){
                        alert("Un champs est vide !")
                    }
                    else if{
                        alert("Un champs est mal rempli !")                
                    }  
                    else{
                        alert("Problème sur le formulaire, veuillez recommencez")
                    }
                }



            • Partager sur Facebook
            • Partager sur Twitter
              30 décembre 2014 à 12:06:20

              Bon j'en suis la. Ca commence à marcher mais lorsque je remplis tous les champs ca me marque quand meme "champs mal remplis" et non "message envoyé"

              <script type="application/javascript">
               $(document).ready(function() {
              	 	$("#send").click(function(){
              
               
                  var mail = document.getElementById("mail").value;
               
               
                   var regMail = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
               
               
                   var pays = document.getElementById("pays").value;
               
               
                   var regPays = new RegExp(/^-?\d+\.?\d*$/);
               
               
                  var country = document.getElementById("country").value;
               
               
                   var regCountry = new RegExp("^[a-zA-Z0-9]+$", "g");
               
                   
                   var formNonRempli = false; //boolean si le form est pas complement remplie
                   var formMalRempli = false; //boolean si le form est pas correctement remplie
                   //pour tester en live si tes variable ne sont pas vide
                   if(mail != '' && pays != '' && country != ''){ //si tous les champs sont non vide
                      formNonRempli = true;
                   }
                   else if(regMail.test(mail) && regPays.test(pays) && regCountry.test(country)){ //si tous les regex sont ok
                      formMalRempli = true;
                   }
               
                   /*si le form est bien rempli et non vide //  sinon on afficher un message d'erreur*/
                   if(formNonRempli && formMalRempli )
                   {
               
                       $.ajax({
               
                           type: "POST",
               
                           url: "http://www.mongroupe.com/live/php/mail.php",
               
                           data: 'mail='+mail+'pays='+pays+'country='+country,
               
                           success : function(rep){
                              //rep est la réponse renvoyer par php sous forme d'echo
                              alert('message envoyé');
                           }
               
                       });
               
                  }
                  else{
                      if(!formNonRempli){
                          alert("Un champs est vide !")
              			}
              			
              		else if(!formMalRempli){
                          alert("Un champs est mal rempli !")                
                      }  
                      else {
                          alert("Problème sur le formulaire, veuillez recommencez")
                      }
                  }
               
                 });
                   });
               
               
                   </script>
              



              • Partager sur Facebook
              • Partager sur Twitter
                30 décembre 2014 à 13:43:22

                Re,

                Alors le problème viens de ces lignes de code, je me suis tromper, si la première condition est vrai la seconde est toujours "sauté"


                 if(mail != '' && pays != '' && country != ''){ //si tous les champs sont non vide
                        formNonRempli = true;
                     }
                     else if(regMail.test(mail) && regPays.test(pays) && regCountry.test(country)){ //si tous les regex sont ok
                        formMalRempli = true;
                     }

                formMalRempli reste à false.

                il faut donc pouvoir traiter les deux conditions, pour cela il faut ce code  :

                if(mail != '' && pays != '' && country != ''){ //si tous les champs sont non vide
                        formNonRempli = true;
                     }
                 
                if(regMail.test(mail) && regPays.test(pays) && regCountry.test(country)){ //si tous les regex sont ok formMalRempli = true; }


                -
                Edité par OrcusZ 30 décembre 2014 à 13:44:15

                • Partager sur Facebook
                • Partager sur Twitter
                  30 décembre 2014 à 14:46:14

                  Super, tout marche parfaitement.

                  Mille fois merci ! 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    30 décembre 2014 à 17:04:55

                    Re,

                    Mais de rien.

                    Si tu as bien compris le code je te propose quelques axe d'amélioration plus sympas que les alert pour les erreurs :

                    • Faire une gestion d'erreur au cas par cas ( une erreur pour mail, une pour pays et une pour country )
                    • Afficher l'erreur en mettant les bordures du formulaire en rouge pour le champ en erreur
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Window location après validation de champs

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown