Suppression de plusieurs lignes à l'aide de cases à cocher en PHP
Le code fourni vise à supprimer plusieurs lignes d'une table de base de données MySQL. Cependant, l'implémentation actuelle rencontre un problème où aucune ligne n'est supprimée. Pour résoudre ce problème, certaines modifications du code sont nécessaires.
Le premier problème réside dans la manière dont vous recevez les valeurs des cases à cocher. Vous devez traiter les valeurs des cases à cocher comme un tableau, semblable à :
<code class="php"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>
Cette modification vous permettra de compter et de parcourir les cases à cocher sélectionnées pour les supprimer.
Une autre erreur est l'absence de la connexion à la base de données lors de l'exécution de la requête. Vous n'avez pas réussi à transmettre $dbc à la fonction mysqli_query(). La syntaxe correcte devrait être :
<code class="php">$result = mysqli_query($dbc, $sql);</code>
Voici le code corrigé :
<code class="php"><?php // Retrieve data from database and prepare HTML table $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'); // Start form and table for displaying links and checkboxes echo '<form name="form1" method="post" action="">'; echo '<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">'; // Header row echo '<tr>'; echo '<td colspan="4" align="center" bgcolor="#FFFFFF"><strong>Delete multiple links</strong></td>'; echo '</tr>'; echo '<tr>'; echo '<td align="center" bgcolor="#FFFFFF">#</td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link ID</strong></td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link Name</strong></td>'; echo '<td align="center" bgcolor="#FFFFFF"><strong>Link URL</strong></td>'; echo '</tr>'; // Data rows while ($row = mysqli_fetch_array($result)) { echo '<tr>'; echo '<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" value="' . $row['link_id'] . '"></td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_id'] . '</td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_name'] . '</td>'; echo '<td bgcolor="#FFFFFF">' . $row['link_url'] . '</td>'; echo '</tr>'; } // Submit button echo '<tr>'; echo '<td colspan="4" align="center" bgcolor="#FFFFFF"><input name="delete" type="submit" value="Delete"></td>'; echo '</tr>'; // Closing tags echo '</table>'; echo '</form>'; // Delete rows if submit button is clicked 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); } // Redirect to a confirmation or success page after deletion if ($result) { echo '<meta http-equiv="refresh" content="0;URL=view_links.php">'; } } mysqli_close($dbc); ?></code>
Ces modifications devraient résoudre le problème et permettre au code de supprimer plusieurs lignes de votre table MySQL à l'aide de cases à cocher .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!