Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liens qui exécute js + script .php

Sujet résolu
    17 février 2017 à 11:11:39

    Bonjour,

    je suis confronté à un petit problème...

    je développe un système de panier sur mon site, via le plugin SimpleCart.

    Pour effectuer le checkout, je dois faire comme ceci:

    <p class="label label-primary"><a href="javascript:;" class="simpleCart_checkout">CHECKOUT</a></p>


    la fonction js:

    <script>
    	simpleCart({
    	    checkout: { 
    	        type: "SendForm" , 
    	        url: "sendCart.php" ,
    	        method: "POST"
    	    } 
    	});
    </script>


    Mon souci:

    j'ouvre une modale afin de vérifier la commande et de vérifier certaines informations, style adresse, nom etc.

    Je crée donc un formulaire, à la validation de celui-ci, j'appelle le script sendCart.php qui:

    - reçois le panier

    - reçois les données du formulaire.

    Et là, ça coince. Séparément, pas de soucis, mais avec mon formulaire, il me dit:

    ( ! ) Notice: Undefined index: itemCount in C:\wamp\www\restaurant\sendCart.php on line 8
    

    Voici le script sendCart.php

    <?php 
    require('fonctions.php');
    $content = $_POST;
    $grandTotal=0;
    $total=0;
    $commande='<commande>';
    
    for ($i=1;$i < $content['itemCount'] + 1 ; $i++){
    	
    	$name='item_name_'.$i;
    	$quantity='item_quantity_'.$i;
    	$price='item_price_'.$i;
    	$total=$content[$quantity]*$content[$price];
    	$grandTotal+=$total;
    	//echo $content[$name].'<br>';
    	//echo $content[$quantity].'<br>';
    	//echo $content[$price].'<br>';
    	//echo $content[$quantity]*$content[$price].'<br>';
    	$commande=$commande.'<produit>'.$content[$quantity].' '.$content[$name].'</produit>';
    }
    echo 'Total: '.$grandTotal.'€';
    
    $commande=$commande.'<total>'.$grandTotal.'€</total>';
    $commande=$commande.'<rue>'.$_POST['rue'].'</rue>';
    $commande=$commande.'<num>'.$_POST['num'].'</num>';
    $commande=$commande.'<cp>'.$_POST['cp'].'</cp>';
    $commande=$commande.'<localite>'.$_POST['loc'].'</localite>';
    $commande=$commande.'<tel>'.$_POST['tel'].'</tel></commande>';
    
    mailCommande('toto@tutu.titi','myName',$commande);
    
    ?>

    et si j'appelle le script sans passer par un formulaire, juste pour traiter la commande, là évidement il reconnait itemCount...

    Help merci d'avance !!


    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2017 à 11:24:54

      Bonjour,

      Fait un print_r($_POST) au début de ton script php.

      Tu peux aussi ouvrir ta console (F12) et regarder dans l'onglet réseau les requetes qui sont envoyées ainsi que les paramètres.

      • Partager sur Facebook
      • Partager sur Twitter
      Un petit +1 si je vous ai aidé est toujours appréciable :).
        17 février 2017 à 11:38:37

        Bonjour,

        voici le print_r:

        Array ( [heure] => [rue] => hjk [num] => [cp] => [loc] => [tel] => ) 

        Donc en gros, mon <form>, il ne tient pas compte de la commande..

        EDIT:

        et si je ne passe pas par mon formulaire, si je passe uniquement la commande:

        Array ( [currency] => EUR [shipping] => 0 [tax] => 0 [taxRate] => 0 [itemCount] => 2 [item_name_1] => prod1 [item_quantity_1] => 1 [item_price_1] => 10 [item_options_1] => [item_name_2] => prod2 [item_quantity_2] => 1 [item_price_2] => 9 [item_options_2] => ) Total: 19€



        -
        Edité par g3kO 17 février 2017 à 11:58:09

        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2017 à 13:08:21

          Essai de rajouter ce qui te manque en extra-data.

          http://simplecartjs.org/documentation/sendform-checkout

          Mais là tu nous donne vraiment trop peu d'info pour t'aider plus. Ton problème est coté client pas coté backend donc il est plus ineteressant d'avoir le html que le php...

          • Partager sur Facebook
          • Partager sur Twitter
          Un petit +1 si je vous ai aidé est toujours appréciable :).
            17 février 2017 à 14:21:38

            Donc voici le code de ma modale, qui se trouve sur index.php

            <!-- Modal -->
            <div class="modal fade multi-step" id="confirmeModale">
            	<div class="modal-admin">
            		<div class="modal-content" style="min-height:680px;">
            			<div class="modal-header">
            				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            				<strong><h4 class="modal-title step-1" data-step="1" id="confirme">Suggestions (Total:<span class="simpleCart_total"></span>)</h4></strong>
            				<strong><h4 class="modal-title step-2" data-step="2" id="confirme">Détails de la livraison</h4></strong>               			
            			</div>
            			
            			<div class="modal-body step-1" data-step="1">
            				<div class="progress">
            				  <div class="progress-bar progress-bar-info progress-bar-striped" role="progressbar" aria-valuenow="50"
            				  aria-valuemin="0" aria-valuemax="100" style="width:50%">
            				    1/2
            				  </div>
            				</div>
            				<div class="container contStyle">							
            					<div class="row">	
            						<!-- <div class="suggest"> -->							
            						<div class="col-md-8 col-sm-12">			
            							<?php 
            							//echo'toto';
            								afficheSuggestions();
            							?>	
            						</div>
            						<!--  </div> -->
            						<div class="col-md-4 col-sm-12">			
            							<div class="cadreCommande">
            								<!-- Rend la table responsive -->
            								<div class="table-responsive">
            									<!-- Affichage de la commande -->
            									<div class="simpleCart_items"></div>
            								</div>
            								<div class="totCommande ligneSep">
            									<!-- Affichage du total de la commande -->
            									Total: <div class="simpleCart_total"></div>
            								</div>
            							</div>
            						</div>
            					</div>
            				</div>									 				
            			</div>
            			<div class="modal-body step-2" data-step="2">
            				<div class="progress">
            				  <div class="progress-bar progress-bar-info progress-bar-striped" role="progressbar" aria-valuenow="100"
            				  aria-valuemin="0" aria-valuemax="100" style="width:100%">
            				    2/2
            				  </div>
            				</div>
            				<div class="container contStyle">
            					<div class="row">
            						<div class="col-md-offset-3 col-md-6 col-sm-12">
            			            	<!--Selection de l'heure --> 
            							<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>
            										<p class="label label-primary dimensionDelete"><a href="javascript:;" class="colorDelete simpleCart_checkout">Valider</a></p>
            								
            									</div>									
            							</form>	
            						</div>
            					</div>																		
            				</div>           	
            	            </div>
            	            
            	            <div class="modal-footer">
            		            <button type="button" class="btn btn-primary step step-1" data-step="1" onclick="sendEvent('#confirmeModale', 2)">Suivant</button>
            		            <button type="button" class="btn btn-primary step step-2" data-step="2" onclick="sendEvent('#confirmeModale', 1)">Précédent</button>           
            	 			</div>			
            			</div><!-- /.modal-content -->
            		</div><!-- /.modal-dialog -->
            	</div><!-- /.modal -->



            -
            Edité par g3kO 17 février 2017 à 14:26:24

            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2017 à 15:04:58

              Je ne vois pas de champ input name="itemCount" dans ton formulaire donc c'est normal de pas le recevoir dans ta page php...
              • Partager sur Facebook
              • Partager sur Twitter
              Un petit +1 si je vous ai aidé est toujours appréciable :).
                17 février 2017 à 15:12:35

                Si j'ajoute un input avec name="itemCount", cela me le vide:

                Array ( [heure] => [rue] => [num] => [cp] => [loc] => [tel] => [itemCount] => )



                Car l'envoi de la commande se fais grâce à la fonction JS que j'ai mis dans mon premier post,

                en gros je dois faire passer cette fonction, ainsi que mes variable du formulaire.. et je bloque totalement :/

                -
                Edité par g3kO 17 février 2017 à 15:15:50

                • Partager sur Facebook
                • Partager sur Twitter
                  17 février 2017 à 15:17:35

                  Ce qui est normal, a toi de le remplir correctement à l'ouverture de ta modal. (c'est un input hidden, l'user n'a pas a sélectionner lui même le nombre d'item je suppose :D)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Un petit +1 si je vous ai aidé est toujours appréciable :).
                    17 février 2017 à 15:22:45

                    Tout à fait, mais tout est déjà rempli, si j'appelle le script SANS passer par le form, le print_r affiche:

                    Array ( [currency] => EUR [shipping] => 0 [tax] => 0 [taxRate] => 0 [itemCount] => 4 [item_name_1] => prodTEST1[item_quantity_1] => 1 [item_price_1] => 9 [item_options_1] => [item_name_2] => prodTEST2 [item_quantity_2] => 3 [item_price_2] => 9 [item_options_2] => [item_name_3] => prodTEST3 [item_quantity_3] => 1 [item_price_3] => 2 [item_options_3] => [item_name_4] => prodTEST4 [item_quantity_4] => 1 [item_price_4] => 1 [item_options_4] => ) 

                    Il faut arriver à push au script, en même temps cette commande + mon formulaire, mais comment faire?

                    -
                    Edité par g3kO 17 février 2017 à 15:23:30

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 février 2017 à 17:11:31

                      Le plus simple c'est à l'ouverture de ta modale créer les champ caché et les alimenter à partir du formulaire ;). Tu parle d'une modal "interne" genre diakog jquery ou sweetalert ou d'une modal "pop-up" javascript?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Un petit +1 si je vous ai aidé est toujours appréciable :).
                        18 février 2017 à 16:58:20

                        Le souci est que la commande de peut être modifiée dans le premier step de la modale, tu as le code de celle-ci plus haut :) c'est une modale créé avec les classes de bootstrap
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 février 2017 à 17:14:54

                          Bonjour,

                          Qu'est-ce que ça donne si dans la ligne 3 du fichier sendCard.php, tu remplaces :

                          $content = $_POST;

                          Par

                          $content = $_POST['itemCount'];

                          Le problème vient peut-être de là car tu appelles ta variable POST, mais tu ne lui dis pas quoi récupérer... 

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 février 2017 à 16:59:21

                            Bonjour,

                            l'array est vide =(

                            Edit: Sinon, est-il possible de, lors du clic sur le boutton de validation du formulaire:

                            - passer la commande grâce à la fonction JS existante

                            - sauvegarder les données du formulaire (càd adresse, etc...) dans une variable js et de les récupérer sur mon script sendCart.php ?

                            EDIT 2: quel est le moyen de savoir exactement comment les données de la commande sont-elle sauvegardée?

                            j'utilise le plugin simpleCart et je ne comprend pas exactement comment cela se passe ....

                            -
                            Edité par g3kO 19 février 2017 à 17:11:18

                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 février 2017 à 13:21:56

                              C'est bon j'ai trouvé la solution!

                              Pour ceux que ça intéresse:

                              dans le script JS sur l'index.php, il faut rajouter les valeurs de:

                              extra_data: {
                                    rue: document.getElementById("rue").value,
                                    num: document.getElementById("num").value,
                                    cp: document.getElementById("cp").value,
                                    loc: document.getElementById("loc").value,
                                    tel: document.getElementById("tel").value      

                              ET

                              simpleCart.bind( 'beforeCheckout' , function( data ){
                              	data.rue = document.getElementById("rue").value;
                              	data.num = document.getElementById("num").value;
                              	data.cp = document.getElementById("cp").value;
                              	data.loc = document.getElementById("loc").value;
                              	data.tel = document.getElementById("tel").value;
                              });




                              • Partager sur Facebook
                              • Partager sur Twitter

                              Liens qui exécute js + script .php

                              × 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