Maison >développement back-end >tutoriel php >Comment supprimer correctement plusieurs lignes à l'aide de cases à cocher en PHP ?

Comment supprimer correctement plusieurs lignes à l'aide de cases à cocher en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 07:23:02501parcourir

How to Correctly Delete Multiple Rows Using Checkboxes in PHP?

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 :

  • Les noms d'entrée des cases à cocher ne sont pas traités comme un tableau, ce qui empêche une boucle appropriée pour la suppression.
  • Aucune connexion à la base de données n'est transmise à la requête à l'aide de mysqli_query.

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!

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