Supprimer plusieurs lignes en utilisant Jquery

J'essaie de supprimer des lignes de ma database sql en utilisant la checkbox à checkbox . Cela fonctionne bien tant qu'il n'y a qu'une seule checkbox cochée. Mais je veux aussi qu'il soit possible de supprimer plusieurs lignes. J'ai vu beaucoup d'exemples, mais je ne peux pas le faire fonctionner. J'espère que quelqu'un ici peut m'aider.

Donc d'abord le file result.php (ici toutes les lignes / tables créées):

  while ($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_BOTH)) { echo "<tr>"; echo "<td><input type='checkbox' name='id[]' class='toedit' value='" . $row[0] . "'></td>"; echo "<td>" . $row[1] . "</td>"; echo "<td>" . $row[2] . "</td>"; echo "</tr>"; } echo "</table>"; 

Ce file est inclus dans mon file html principal (main.html), voici également le Jquery.

Jquery envoie des variables chechbox au file delete.php:

  <script type="text/javascript"> $(".deletelogg").on('click', function(){ $.ajax({ type: 'POST', url: "php/delete.php", data: {id:$('.toedit:checked:first').val()}, success: function(data) { alert(data); $("p").text(data); } }); }); </script> 

Dernier dans mon file delete.php:

 include 'connect-database.php'; for ($i = 0; $i < count($_POST['id']); $i++) { if ($_POST['id'][$i] != "") { echo $_POST['id'] ; $sql = "DELETE FROM Logg Where LoggID LIKE '".$_POST['id']."'"; $stmt = sqlsrv_query( $conn, $sql); if ($stmt == false) { die( print_r(sqlsrv_errors(), true) ); } } } 

J'essayais de faire un tableau contenant tous les id de la checkbox , mais cela n'a pas fonctionné … des moyens d'aide?

Un exemple de travail: http://jsfiddle.net/Twisty/1y4zy5mn/

Vous devriez itérer sur vos cases à cocher et collecter les valeurs. Compte tenu du code HTML suivant:

 <table> <tr> <td> <input type="checkbox" name="id[]" class="toedit" value="1" /> </td> <td>One</td> <td>Fish</td> </tr> <tr> <td> <input type="checkbox" name="id[]" class="toedit" value="2" /> </td> <td>Two</td> <td>Fish</td> </tr> <tr> <td> <input type="checkbox" name="id[]" class="toedit" value="3" /> </td> <td>Red</td> <td>Fish</td> </tr> <tr> <td> <input type="checkbox" name="id[]" class="toedit" value="4" /> </td> <td>Blue</td> <td>Fish</td> </tr> </table> <button class="deletelogg">Delete</button> <p></p> 

Votre JQuery devra faire un peu plus de travail. Cela devrait fonctionner pour 1 ou plusieurs:

 $(".deletelogg").on('click', function () { var ids = []; $(".toedit").each(function () { if ($(this).is(":checked")) { ids.push($(this).val()); } }); if (ids.length) { $.ajax({ type: 'POST', url: "php/delete.php", data: { id: ids }, success: function (data) { alert(data); $("p").text(data); } }); } else { alert("Please select items."); } }); 

Avec ceci, vous pouvez aussi passer à une boucle foreach() :

 include 'connect-database.php'; foreach ($_POST['id'] as $id) { echo $id; $sql = "DELETE FROM Logg Where LoggID = $id"; $stmt = sqlsrv_query( $conn, $sql); if ($stmt == false) { die( print_r(sqlsrv_errors(), true) ); } } 

Je le ferais de cette façon: d'abord faire une checkbox "checkAll", et quand est cochée, cochez toutes vos cases à cocher. Ensuite, à la fin de votre formulaire, mettez le button "supprimer". Lorsque celui-ci est pressé, toutes les cases cochées sont supprimées. Je pense que cela fonctionne même pour certaines cases (si vous ne vérifiez que certaines d'entre elles, pas toutes).

 <div id="content"></div> <input type="checkbox" id="checkAll"> //get all the rows from db here, or make them manually <input type="checkbox" class="check" name="checkbox" value="<?php echo $row->id;?>"> //... 

Ensuite, avec ce morceau de code js, vous pouvez les vérifier tous, ou certains d'entre eux, et les "envoyer" à un script côté server qui va les attraper, et les supprimer de la database.

 var checkBoxes = document.getElementsByTagName('input'); var param = ""; var params = []; for (var counter=0; counter < checkBoxes.length; counter++) { if (checkBoxes[counter].type.toUpperCase()=='CHECKBOX' && checkBoxes[counter].checked == true) { param += checkBoxes[counter].value+' '; params = param; } } $.ajax({ type: "POST", url: "path/to/server/side/script", data: { params:params }, success: function(resp){ $('#content').html(resp); } }); 

Et pour les vérifier tous:

 $("#checkAll").click(function(){ $(".check").prop('checked', $(this).prop('checked')); }); 

Je ne sais pas si c'est le meilleur moyen, mais c'est un sharepoint départ. Aussi, n'oubliez pas de sécuriser votre application.