Partage
  • Partager sur Facebook
  • Partager sur Twitter

[JQuery/Ajax] Mysql insert into

Sujet résolu
    9 janvier 2018 à 14:58:10

    salut à tous.

    j'ai mis en place un formulaire d'envoi dynamique qui m'affiche en directe les envois dans un tableau et totu fonctionne à merveille.

    J'aimerai cependant qu'a chaque fois qu'une ligne est insérée dans le tableau elle soit par la même occasion enregistrée dans ma base de donnée.

    j'ai essayer d'utiliser une fonction Ajax pour envoyer par POST les inputs a insérer via mysql mais ça ne fonctionne pas.

    <script type="text/JavaScript">
    function ajouterLigne()
    {
    	var tableau = document.getElementById("tableau");
    
    	var ligne = tableau.insertRow(-1); // Ajout d'une ligne
    
    	var colonne1 = ligne.insertCell(0);//on ajoute la référence du produit
    	colonne1.innerHTML += document.getElementById("reference").value;
    
    	var colonne2 = ligne.insertCell(1);//on ajoute la quantité
    	colonne2.innerHTML += document.getElementById("quantity").value;
    
    	var timestamp = Math.round(new Date().getTime() / 1000);
    	var colonne3 = ligne.insertCell(2);
    	colonne3.innerHTML += timestamp;//on ajoute le timestamp
    	
    	var colonne4 = ligne.insertCell(3);
    	var att = document.createAttribute("onclick");       // On créer l'attribu onclick à la colonne "supprimer"
    	att.value = "supprimerLigne(this.parentNode.rowIndex);"; // on défini le onclick 
    	colonne4.setAttributeNode(att); 
    	colonne4.innerHTML += " X ";
    
    }
    function ajax()
      {
    
      var ques = document.getElementById("reference").value; 
      var ans = document.getElementById("quantity").value; 
      var inp = = Math.round(new Date().getTime() / 1000); 
      var urlString ="ref="+ques+"&quantite="+ans+"&time="+inp;
    
      $.ajax
      ({
      url: "receipt_product.php",
      type : "POST",
      cache : false,
      data : urlString,
      });
    
    
      }
    
    	
    		
    function supprimerLigne(num)
    {
    	document.getElementById("tableau").deleteRow(num);
    }
    		
    		</script>
    
    <!-- inclusion des libraries jQuery et jQuery UI (fichier principal et plugins) -->
    
     
    <section id="business" class="portfolio sections">
        <div class="container">
            <div class="head_title text-center">
                     
                <div class="row">
                    <div class="col-sm-6">   
    				<div class="info">
    				<span class="error" style="display:none"><h2>DONN&Eacute;ES INVALIDE</h2></span>
    				<span  class="success" style="display:none"><h2>ENREGISTREMENT FAIT</h2></span>
    				</div>
    
      
    <script>
      $( function() {
        $("#reference").autocomplete({
            source : "autocomplete.php"
         });
    } );
    </script>
         
                <form action="" method="post">
                            
     
    				
    					Référence GEF : <br />
    					
    						<input id="reference" name="reference" title="Référence GEF">
    					
    
    						<br />
    
    						Quantité reçue : <br />
    						<input type="number" name="quantity" id="quantity" />
    						<br />
    						<input type="button" onclick="ajouterLigne();ajax();" value="AJOUTER" />
    					</form>
    				</div>
    <table id="tableau" class="tftable">

    <thead>
    <tr>
    <th> Référence GEF du Produit </th>
    <th> Quantité Reçue </th>
    <th> Horodatage </th>
    <th> Supprimer </th>
    </tr>
    </thead>

    <tbody>

    </tbody>
    </table>

    page de traitement :

    <?php
    // code ajout produit ici
    			$refajout = securite_bdd($_get['ref'];
    			$quantity = securite_bdd($_POST['quantite'];
    			$timestampt = securite_bdd($_POST['time'];
    			
    			$req = $bdd->prepare("SELECT * FROM list_product WHERE ref = :ref");
    			$req->execute(array(
    			'ref' => $refajout));
    			$resultat_ajout = $req->fetch();
    			
    			if ($resultat_ajout['id'] >= 1)
    			{
    			$req = $bdd->prepare("INSERT INTO input_product(dates, id_product, quantity, uf) VALUES(:dates, :id_prod, :quantite, :uf)");
    			$req->execute(array(
    				'dates' => $timestampt,
    				'id_prod' => $resultat_ajout['id'],
    				'quantite' => $quantity,
    				'uf' => $resultat_build['id']
    				)); 
    echo 'ok';
    
    			}
    			else 
    			{
    				echo 'erreur de post 12<br />';
    			}
    // fin code ajout produit
    
    ?>

    J'espère que mon code est clair. et je remercie d'avance toute aide que je pourrais avoir.


    -
    Edité par kekstyle 9 janvier 2018 à 15:00:14

    • Partager sur Facebook
    • Partager sur Twitter
      9 janvier 2018 à 19:56:48

      C'est côté back ou AJAX que ça coince? Force un affichage des variables aux endroits clés pour le savoir
      • Partager sur Facebook
      • Partager sur Twitter
        9 janvier 2018 à 20:40:48

        Bah le soucis c'est que j'arrive à avoir un retour de ma fonction AjoiterLigne mais pas de ma fonction ajax
        • Partager sur Facebook
        • Partager sur Twitter
          9 janvier 2018 à 20:45:02

          Mais est-ce que ca arrive au back end au moins?
          • Partager sur Facebook
          • Partager sur Twitter
            9 janvier 2018 à 21:21:26

            Un problème tu as $_get['ref'] ($_get n'existe pas c'est $_GET) alors que tu envoies tes données en $_POST et tu n'as pas fermé les parenthèse aux L3, 4, 5;  donc tu as au moins une erreur dans ton code PHP. Travaille avec la console de ton navigateur onglet réseau pour voir le retour de ton script php.

            Pour le data, il faut préférer la version objet.

            Tu peux avant de passer par AJAX , laisser les choses se faire "normalement", avoir un bouton submit et dans action du form mettre receipt_product.php, si tout se passe bien tu pourras retranscrire.

            PS: Que représente securite_bdd ? du htmlspecialchars dedans ?

            -
            Edité par WillyKouassi 9 janvier 2018 à 21:22:12

            • Partager sur Facebook
            • Partager sur Twitter
            le bienfait n'est jamais perdu
              10 janvier 2018 à 12:06:01

              un grand merci à toi !

              j'avais testé la valeur GET avant de passer par POST et c'est à la modification de mon script que j'ai fait cette erreur.

              Pour la fermeture de parenthèse merci parce que j'ai beau avoir relu mon script des dizaines  de fois je suis quand même passé à côté.

              la fonction securite_bdd utilise en gros l'attribut addcslashes pour mes entrées SQL mais je pense la supprimé puisque je fonctionne avec des requêtes préparées en PDO.

              • Partager sur Facebook
              • Partager sur Twitter

              [JQuery/Ajax] Mysql insert into

              × 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