<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="toybox"; // Database name
$tbl_name="Emp"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
// echo $count;
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<td><form name="form1" method="post" action="">
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td bgcolor="#FFFFFF"> </td>
<td colspan="4" bgcolor="#FFFFFF"><strong>Delete multiple rows in mysql</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Id</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Lastname</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Email</strong></td>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['EmpId']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $rows['EmpId']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['FirstName']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['LastName']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $rows['Email']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="5" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" id="delete" value="Delete"></td>
</tr>
<?php
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
echo " Record have been deleted";
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
Répondre
Plutôt que de faire une requête pour chaque itération de votre suppression en boucle, je construirais tous les index en une chaîne, et utiliser quelque chose comme ce qui suit:
DELETE FROM tableName
WHERE id IN (1,2,12,53)
En outre, votre bouton de soumission ne passera pas par $delete
, mais à la place $_POST["delete"]
. Et avec votre connexion:
mysql_connect("$host", "$username", "$password")
Vous ne devez pas vraiment utiliser des variables telles que les chaînes (en général) - cela devrait être écrit:
mysql_connect($host, $username, $password)
De plus, vous avez quelques plus de problèmes dans et autour votre logique de suppression. Par exemple, j'ai déjà fait remarquer que votre bouton <input type='submit' name='delete' />
sera connu comme $_POST["delete"]
une fois qu'il est enregistré sur le serveur. De même, vos cases à cocher, ayant une valeur d'identifiant de checkbox[]
, seront simplement appelées $_POST["checkbox"]
sur le serveur.
En outre, votre variable $count
, utilisée dans votre logique de suppression, est basée sur la requête précédente qui a sélectionné tous les enregistrements pour les afficher. Il ne reflète pas le nombre de cases à cocher à supprimer, il reflète le nombre d'enregistrements affichés. En tant que tel, votre boucle ne doit pas être basée sur elle:
for ($i = 0; $i < count($_POST["checkbox"]); $i++)
{
// delete $_POST["checkbox"][$i];
}
Et encore une fois, je vous suggère de construire une chaîne de valeurs et d'exécuter une requête unique au lieu de plusieurs.
Working Code .. Consider Point 1 2 and 3
<?php
// Make a MySQL Connection
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("funconnect") or die(mysql_error());
// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM members")
or die(mysql_error());
$count=mysql_num_rows($result);
echo "<form name='sendmail' method='post' action='memberList.php'><table border='1'>";
echo "<tr> <th>Select</th> <th>Name</th> </tr>";
// keeps getting the next row until there are no more to get
$countSn = 0;
while($row = mysql_fetch_array($result)) {
// Print out the contents of each row into a table
$chkname = "checkbox".$countSn; #Point 1- Create defferent name for checkboxex like checkbox0, checkbox1
echo "<tr><td><input type='checkbox' name=".$chkname." value=".$row['m_id']." /></td>";
echo "</td><td>";
echo $row['m_name'];
echo "</td></tr>";
$countSn++;
}
echo '<tr><td colspan=2><input name="delete" type="submit" id="delete" value="Delete"></td></tr></table></form>';
$delete=$_POST['delete'];
$checkbox=$_POST['checkbox'];
// Check if delete button active, start this
if($delete){
for($i=0;$i<$count;$i++){
$cname = "checkbox".$i;# Point 2- Create check box name like checkbox0, checkbox1
$checkbox=$_POST[$cname]; #Point 3 - Retrieve data against name
echo $i."===".$checkbox."<br />";
//echo $del_id;
//$sql = "DELETE FROM $tbl_name WHERE id='$del_id'";
//$result = mysql_query($sql);
}
// if successful redirect to delete_multiple.php
if($result){
//echo "<meta http-equiv=\"refresh\" content=\"0;URL=delete_multiple.php\">";
}
}
mysql_close();
?>
- 1. Optimisation (My) SQL Query
- 2. PHP: requêtes SQL multiples vs un monstre
- 3. Exemples très complexes (Postgre/My) SQL?
- 4. [My] SQL VARCHAR Taille et Null-Termination
- 5. Voir base de données (MY SQL)
- 6. Importer un gros fichier (My) SQL
- 7. Suppression de lignes multiples d'un TableView
- 8. mondialisation uiCulture = "en" culture = "en-MY"
- 9. PHP/MySQL Suppression d'images
- 10. veulent combiner ensemble multiples en php
- 11. Comparer les valeurs multiples en PHP
- 12. PHP & Mysqli - Requêtes multiples en un?
- 13. Trouver des multiples d'un nombre en PHP
- 14. PHP Options multiples
- 15. PHP multiples fichier télécharger
- 16. totaux multiples sur sql
- 17. installations php multiples
- 18. SQL Suppression en cascade sans clé étrangère?
- 19. Suppression de requêtes SQL en double aide
- 20. Sortie SQL sur la suppression en cascade
- 21. Critique My DB Design
- 22. variable de session de suppression en php
- 23. SQL: suppression complexe
- 24. PHP chiffres multiples d'expression régulière
- 25. my "remember me" -fonction
- 26. NHibernate multiples SQL natif rejoint
- 27. My Own jQuery Accordéon
- 28. SQL - Commande par critères multiples
- 29. Linq DBML multiples serveurs SQL
- 30. Licence SQL Server Instances multiples
if ($ _ POST [ "supprimer"]) { \t for ($ i = 0; $ i <$ count; $ i ++) { \t \t $ del_id = case à cocher $ [$ i]; \t \t $ sql = "SUPPRIMER FROM $ tbl_name WHERE id = '$ case à cocher [$ i]'"; \t \t $ resultat = requête mysql ($ sql); \t} –
je l'ai utilisé mais il ne supprime pas –
Srikanth, lire mes mises à jour dans ma réponse. Vous avez plusieurs autres problèmes. – Sampson