Mit PHP mehrere durch Kontrollkästchen ausgewählte Zeilen löschen
Das Löschen mehrerer Zeilen aus einer Datenbank basierend auf der Benutzerauswahl ist eine häufige Aufgabe in der Webentwicklung . Um dies mithilfe von Kontrollkästchen in PHP zu erreichen, müssen bestimmte Schritte befolgt werden.
Codeanalyse
Der bereitgestellte Code enthält beim Versuch, mehrere Zeilen basierend auf der Kontrollkästchenauswahl zu löschen einige Fehler:
Lösung
Um diese Probleme zu beheben und eine erfolgreiche Zeilenlöschung sicherzustellen, sollten die folgenden Anpassungen vorgenommen werden:
Array-basierte Kontrollkästchennamen
Die Eingabenamen der Kontrollkästchen sollten als Array behandelt werden, um die Schleife zum Löschen zu erleichtern. Dies kann erreicht werden, indem [] an den Namen des Kontrollkästchens angehängt wird:
<code class="html"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>
Datenbankverbindung in Abfrage
Die Datenbankverbindung ($dbc) sollte als übergeben werden Parameter für die Abfrage mit mysqli_query:
<code class="php">$result = mysqli_query($dbc, $sql);</code>
Beispielskript
Das korrigierte Skript unten enthält diese Änderungen und demonstriert die Funktionalität:
<code class="php"><?php // Database connection $dbc = mysqli_connect('localhost', 'root', 'admin', 'sample') or die('Error connecting to MySQL server'); // Query to retrieve records $query = "select * from links ORDER BY link_id"; $result = mysqli_query($dbc, $query) or die('Error querying database'); // Count records $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> </form> </td> </tr> </table> <?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($dbc, $sql); } // If successful, redirect to view_links.php if ($result) { echo '<meta http-equiv="refresh" content="0;URL=view_links.php">'; } } mysqli_close($dbc); ?></code>
Durch diese Korrekturen löscht das Skript effektiv mehrere Zeilen aus der angegebenen Tabelle, basierend auf den Kontrollkästchenauswahlen des Benutzers.
Das obige ist der detaillierte Inhalt vonWie lösche ich mehrere Zeilen mithilfe von Kontrollkästchen in PHP korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!