Löschen mehrerer Zeilen durch Auswahl von Checkboxen mit PHP
Möchte ich löschen mehrerer Zeilen aus MYSQL-Datenbank. Ich habe diese delete.php Datei und wählen Sie verschiedene links, und löschen Sie diese über die Checkboxen.
<html>
<head>
<title>Links Page</title>
</head>
<body>
<h2>Choose and delete selected links.</h2>
<?php
$dbc = mysqli_connect('localhost','root','admin','sample')
or die('Error connecting to MySQL server');
$query = "select * from links ORDER BY link_id";
$result = mysqli_query($dbc,$query)
or die('Error querying database');
$count=mysqli_num_rows($result);
?>
<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="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>
</tr>
<?php
while ($row=mysqli_fetch_array($result)) {
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row['link_id']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>
</tr>
<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="3" bgcolor="#FFFFFF"><strong>Delete multiple links</strong> </td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">#</td>
<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>
</tr>
<?php
while ($row=mysqli_fetch_array($result)) {
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox" type="checkbox" value="<?php echo $row['link_id']; ?>"></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_id']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_name']; ?></td>
<td bgcolor="#FFFFFF"><?php echo $row['link_url']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>
</tr>
<?php
//Check if delete button active, start this
if(isset($_POST['delete']))
{
$checkbox = $_POST['checkbox'];
for($i=0;$i<count($checkbox);$i++){
$del_id = $checkbox[$i];
$sql = "DELETE FROM links WHERE link_id='$del_id'";
$result = mysqli_query($sql);
}
//if successful redirect to delete_multiple.php
if($result){
echo "<meta http-equiv=\"refresh\" content=\"0;URL=view_links.php\">";
}
}
mysqli_close($dbc);
?>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>
Dieses scheint nicht, jede Zeile zu löschen. Meine Daten aufgefüllt wird, in die Tabelle ein. Ich denke, dass das problem mit dem PHP-code. Bitte helfen Sie mir hier draußen.
InformationsquelleAutor der Frage spyder | 2013-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Behandeln Sie es als ein array wie dieses,
Dann nur, Sie nehmen kann zählen und Schleife für den Löschvorgang.
Müssen Sie auch passieren die Datenbank-Verbindung zu der Abfrage.
Deins hat es nicht:
InformationsquelleAutor der Antwort Edwin Alex
Verwenden Sie die array-Schreibweise wie
name="checkbox[]"
in Ihreminput
element. Dies wird Ihnen$_POST['checkbox']
als ein array. In der Abfrage, die Sie können verwenden Sie es alsDas ist eine einzige Abfrage, um alles zu löschen.
Hinweis: Sie müssen zu entkommen, die übergebenen Werte in
$_POST['checkbox']
mitmysql_real_escape_string
oder ähnliches zu verhindern SQL-Injection.InformationsquelleAutor der Antwort Shiplu Mokaddim
Löschen, Mehrere checkbox mit PHP-Code
InformationsquelleAutor der Antwort user3654452
InformationsquelleAutor der Antwort user1900387
Etwas, das manchmal aufkommt, Sie kann/können sich bewusst sein,
Nicht immer abgeholt werden, indem durch $_POST['löschen'] bei der Verwendung von IE. Firefox und chrome funktionieren sollte aber. Ich benutze ein separates anstatt das löst das problem für den IE
Als für Ihre nicht löschen im code oben angezeigt werden echo aus 2x sets von Checkboxen, beide ziehen die gleichen Daten? Ist das nur ein copy + paste Fehler oder ist das tatsächlich, wie der code ist?
Wenn Ihr, wie der code ist, das wird das problem sein, da könnte der Benutzer ankreuzen einer checkbox-array Element, aber der andere wird deaktiviert werden, damit der php-code für löschen ist immer verwirrt. Entweder benennen Sie die 2. Kontrollkästchen löschen oder blockieren von html-sicher, die Sie nicht brauchen, um die Anzeige der gleichen Liste zweimal ?
InformationsquelleAutor der Antwort Dave
InformationsquelleAutor der Antwort Oladimeji Ajeniya