Une ligne s'insere, pas les autres (tableau js)

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
kraltamyr
Messages : 1
Enregistré le : 13 nov. 2018, 15:26

Une ligne s'insere, pas les autres (tableau js)

Message par kraltamyr » 13 nov. 2018, 15:29

Bonjour,

Voila je rencontre un petit problème avec mon code. Comme expliqué dans le titre : j'insère un tableau, la 1ère ligne passe mais pas les autres.
Je débute en javascript et je ne sais pas comment retourner les autres lignes de mon système. Lorsque je submit, elles doivent toutes s'insérer dans la bdd. merci
1.php est le formulaire (tableau);
script.js fait passer mes variables dynamiques vers 2.php
send.php insère les données.

1.php

Code : Tout sélectionner

<!doctype html>
<html lang="en">
  <head>
      <meta charset="utf-8">
      <title>Poster en ajax</title>
      <link rel="stylesheet" href="ajax.css">
      <script src="jquery.min.js"></script>
      <script src="script.js"></script>

      <SCRIPT language="javascript">

    function addRow(tableID) {

      var table = document.getElementById(tableID);

      var rowCount = table.rows.length;
      var row = table.insertRow(rowCount);

      var cell1 = row.insertCell(0);
      var element1 = document.createElement("input");
      element1.type = "checkbox";
      element1.name="chkbox[]";
      cell1.appendChild(element1);

      var cell2 = row.insertCell(1);
      cell2.innerHTML = "<input type='text' placeholder='Votre nom' class='nom' />";

      var cell3 = row.insertCell(2);
      cell3.innerHTML = "<textarea placeholder='Votre message' class='message'></textarea>";
      }

    function deleteRow(tableID) {
        try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;

        for(var i=0; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                table.deleteRow(i);
                rowCount--;
                i--;
            }
        }
        }catch(e) {
            alert(e);
        }
    }

</SCRIPT>
  </head>

  <body>
      <h2>Ajax</h2>
      <div class="msg"></div>


  <input type="button" class="btn btn-success" value="Ajouter un autre produit" onClick="addRow('dataTable')" />

  <input type="button" class="btn btn-danger" value="Supprimer le produit" onClick="deleteRow('dataTable')" />

    <table class="table table-bordered table-striped table-condensed" width="1000" border="1">
    <thead>
    <tr>
    <th width="40"></th>
    <th width="40">nom</th>
    <th width="40">message</th>
    </tr>
    </thead>
    <tbody id="dataTable">

    </tbody>
    </table>

    <input class="submit" type="submit" value="Envoyer...">
    </body>
</html>

Code : Tout sélectionner

$(document).ready(function(){
    $('.submit').click(function(){
    $(".msg").slideDown().load("send.php", {
     nom: $('.nom').val(),
    message: $('.message').val()});
  });
});
send.php

Code : Tout sélectionner

<?php $bdd = new PDO('mysql:host=localhost;dbname=ajax', 'root', '');
if(!empty($_POST['nom']) && !empty($_POST['message'])) {
 
  {
      $nom = $_POST["nom"];
      $message = $_POST["message"];

    $req = $bdd->prepare("INSERT INTO js(nom, message) VALUES(?,?)");
		$req->execute(array($nom,$message));
    echo "<span class='success'>Vos données ont été envoyées</span>";
  }
} ?>
merci!

Avatar du membre
webmaster
Administrateur du site
Messages : 53
Enregistré le : 28 févr. 2017, 15:19

Re: Une ligne s'insere, pas les autres (tableau js)

Message par webmaster » 14 nov. 2018, 13:34

Bonjour,

Quel est le problème précisément ?
C'est le Ajax qui n'arrive pas à envoyer plus d'une ligne ?
Pour le voir, il faut ouvrir la console du navigateur et regarder dans l'onglet network si l'appel se fait bien

Ou c'est le serveur qui n'enregistre pas plus d'une ligne ?
Si c'est le cas, ca ressemble à une erreur SQL classique de "duplicate entry key"
TJS : 18 ans le bestiau

Répondre