Maison >développement back-end >tutoriel php >Comment puis-je supprimer plusieurs lignes d'une table de base de données MySQL à l'aide de cases à cocher en PHP, et quelles erreurs courantes dois-je éviter ?

Comment puis-je supprimer plusieurs lignes d'une table de base de données MySQL à l'aide de cases à cocher en PHP, et quelles erreurs courantes dois-je éviter ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 16:50:30727parcourir

How can I delete multiple rows from a MySQL database table using checkboxes in PHP, and what common errors should I avoid?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn