Utiliser PHP pour supprimer plusieurs lignes sélectionnées par des cases à cocher
La suppression de plusieurs lignes d'une base de données en fonction de la sélection de l'utilisateur est une tâche courante dans le développement Web . Pour ce faire à l'aide de cases à cocher en PHP, des étapes spécifiques doivent être suivies.
Analyse du code
Le code fourni, lors de la tentative de suppression de plusieurs lignes en fonction de la sélection des cases à cocher, contient quelques erreurs :
Solution
Pour résoudre ces problèmes et garantir une suppression réussie des lignes, les ajustements suivants doivent être effectués :
Noms des cases à cocher basées sur un tableau
Les noms d'entrée des cases à cocher doivent être traités comme un tableau pour faciliter la boucle pour la suppression. Ceci peut être réalisé en ajoutant [] au nom de la case à cocher :
<code class="html"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>
Connexion à la base de données dans la requête
La connexion à la base de données ($dbc) doit être transmise en tant que paramètre à la requête à l'aide de mysqli_query :
<code class="php">$result = mysqli_query($dbc, $sql);</code>
Exemple de script
Le script corrigé ci-dessous intègre ces modifications et démontre la fonctionnalité :
<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>
En effectuant ces corrections, le script supprimera effectivement plusieurs lignes du tableau spécifié en fonction des sélections de cases à cocher de l'utilisateur.
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!