Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajout en bdd SANS quitter la page en cours (modale

    19 février 2017 à 23:03:24

    Bonsoir,

    j'ai une fenêtre modale en 2 étape (next, confirmation).

    Dans la première étape, j'ai 4 ou 5 champs que le user doit remplir:

    <form action="sendCart.php" name="envoiCommande" role="form" class="form-horizontal" method="post" accept-charset="utf-8">
    	<h3>Heure de livraison souhaitée</h3>
    	<div class="form-group">
    		<div class="input-group date form_time col-md-12" data-date="" data-date-format="hh:ii" data-link-field="dtp_input3" data-link-format="hh:ii">
    			<input name="heure" id="heure" class="form-control" size="16" type="text" value="" readonly>
    			<span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>
    		</div>
    		<input type="hidden" id="dtp_input3" value="" /><br>
    	</div>
    					
    	<h3>Confirmation de l'adresse</h3>
    	<div class="form-group">
    		<div class="input-group col-md-12">
    			<input name="rue" placeholder="Nom de la rue" class="form-control" type="text" id="rue"/>						
    		</div>
    	</div> 	<br>				
    	<div class="form-group">
    		<div class="input-group col-md-12">
    			<input name="num" placeholder="Numéro de l'habitation" class="form-control" type="text" id="num"/>						
    		</div>
    	</div> 	<br>
    	<div class="form-group">
    		<div class="input-group col-md-12">
    			<input name="cp" placeholder="Code postal" class="form-control" type="text" id="cp"/>						
    		</div>
    	</div> 	<br>						
    	<div class="form-group">
    		<div class="input-group col-md-12">
    			<input name="loc" placeholder="Localité" class="form-control" type="text" id="loc"/>						
    		</div>
    	</div> 	<br>
    	<div class="form-group">
    		<div class="input-group col-md-12">
    			<input name="tel" placeholder="Téléphone" class="form-control" type="text" id="tel"/>						
    		</div>
    	</div> 	<br>
    								
    	<div class="form-group">
    		<div class="col-md-offset-4 col-md-4"><input  class="btn btn-primary" type="submit" value="Commander"/></div>
    	</div>									
    </form>	


    Est-il possible d'éviter cette étape de formulaire et de sauvegarder directement, lors du clic sur le bouton de validation, les données saisies en bdd?

    Merci d'avance pour vos réponses !!

    -
    Edité par g3kO 19 février 2017 à 23:04:10

    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2017 à 4:26:40

      Oui c'est possible pour cela il faut te tourner vers ajax soit en javascript soit avec l'aide de jquery (moins à écrire)

      -
      Edité par kev27 20 février 2017 à 4:26:54

      • Partager sur Facebook
      • Partager sur Twitter
      La fainéantise est un vilain défaut
        20 février 2017 à 9:36:45

        Ok merci, et quelqu'un pourrait m'aider à le faire?

        je ne m'y connais vraiment pas en ajax/jQuery :/

        • Partager sur Facebook
        • Partager sur Twitter
          20 février 2017 à 12:24:07

          $("#ton_bouton).click(function(e){
              var champs1 = $(#champs1).val(); //recuperation de la valeur d'un input (text,date,hidden,password)
              var case1 = $("#case1:checked).val();//valeur d'une case à cocher ou d'un radio
              var select1 = $("#select1 option:selected").val();// valeur d'une liste déroulante
              
               //envoi via ajax
              $.ajax({
                  type:"post", // ou get type d'envoi on fini par une virgule
                  url:"fichier_de_traitement.php",//adresse du fichier php qui va traiter
                  data:{
                     pseudo : champs1,
                     choix: case1,
                     ville: select1 
                   //data sert à envoyer les données en premier le nom de la données (qui servira pour la récupération php par exemple ici côté php on aura $_POST['pseudo'] qui contiendra la valeur de champs1
                  }, 
                  success:function(reponse){
                     // ce que tu veut afficher une fois que php à traiter
              },
             error:function(reponse){
              //en cas d'erreur
             console.log(reponse);
             }
            });
            e.preventDefault(); //pour empcher l'effet du lien du bouton
          });

          Bien sure  tu inclus jquery avant ce script

          J'espére que cela va t'aider à comprendre le fonctionnement

          • Partager sur Facebook
          • Partager sur Twitter
          La fainéantise est un vilain défaut
            20 février 2017 à 14:03:44

            Merci pour ton script,

            est-il possible, avant de rediriger vers "fichier_de_traitement.php" d'ajouter les variables du formulaire en variables de session? ça serait génial!

            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2017 à 16:01:07

              Bonjour,

              Côté client (en javascript) tu peux stocker les données du formulaire avec sessionStorage:

              //On récupère les données du formulaire
              var formData = new FormData(document.querySelector('form'))
              //on les enregistre
              for(var key in formData){
                  sessionStorage.setItem(key, formData[key]);
              }

              Les données seront alors enregistrées côté client et donc accessibles sur n'importe quelle autre page avec javascript mais pas côté serveur.

              Pour les enregistrer en variable de session PHP, il  faut dans le  fichier fichier_de_traitement.php réaliser une opération identique:

              foreach($_POST as $key => $value){
                  $_SESSION[$key] = $value;
              }

              Alors ces données sont accessibles n'importe quand, côté serveur, tant que la session est maintenue.

              J'espère avoir répondu à la deuxième question.

              Elisabeth

              • Partager sur Facebook
              • Partager sur Twitter
                21 février 2017 à 11:07:37

                Bonjour,

                je ne comprend pas le principe de récupération,

                car si j'ai d'autres variable qui passent en $_POST, comment les distinguer?

                • Partager sur Facebook
                • Partager sur Twitter
                  21 février 2017 à 14:08:44

                  Du côté php, tu peux stocker dans un tableau les variables postées qui t'intéressent.

                  Par exemple..

                  $tableau = array('nom','mdp');
                  foreach($_POST as $key => $value){
                  
                      for($i=0;$i<count($tableau);$i++){
                        if($tableau[$i] == $key){
                         $_SESSION[$key] = $value; 
                        }
                      }
                  }



                  • Partager sur Facebook
                  • Partager sur Twitter
                  Etudiant en deuxième année de BTS en développement. Accepté à la MIAGE de Rennes 2017

                  Ajout en bdd SANS quitter la page en cours (modale

                  × 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