Heim >Backend-Entwicklung >PHP-Tutorial >Wie lösche ich mehrere Zeilen mithilfe von Kontrollkästchen in PHP korrekt?

Wie lösche ich mehrere Zeilen mithilfe von Kontrollkästchen in PHP korrekt?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 07:23:02507Durchsuche

How to Correctly Delete Multiple Rows Using Checkboxes in PHP?

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:

  • Die Kontrollkästchen-Eingabenamen werden nicht als Array behandelt, was eine ordnungsgemäße Schleife zum Löschen verhindert.
  • Es wird keine Datenbankverbindung an die Abfrage mit mysqli_query übergeben.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn