首頁 >後端開發 >php教程 >如何在 PHP 中使用複選框正確刪除多行?

如何在 PHP 中使用複選框正確刪除多行?

Patricia Arquette
Patricia Arquette原創
2024-10-28 07:23:02507瀏覽

How to Correctly Delete Multiple Rows Using Checkboxes in PHP?

使用PHP 刪除複選框選擇的多行

根據使用者選擇從資料庫中刪除多行是Web 開發中的常見任務。要在 PHP 中使用複選框來完成此操作,必須遵循特定步驟。

程式碼分析

提供的程式碼在嘗試根據複選框選擇刪除多行時包含一些錯誤:

  • 複選框輸入名稱不被視為數組,這會阻止正確的循環刪除。
  • 沒有資料庫連線傳遞到使用 mysqli_query 的查詢。

解決方案

要解決這些問題並確保成功刪除行,應進行以下調整:

基於數組的複選框名稱

複選框輸入名稱應視為數組,以便於循環刪除。這可以透過將[] 附加到複選框名稱來實現:

<code class="html"><input name="checkbox[]" type="checkbox" value="<?php echo $row['link_id']; ?>"></code>

查詢中的資料庫連接

資料庫連接($dbc) 應作為使用mysqli_query 查詢的參數:

<code class="php">$result = mysqli_query($dbc, $sql);</code>

範例腳本

下面修正的腳本合併了這些變更並示範了功能:

<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>

透過進行這些更正,腳本將根據使用者的複選框選擇有效地從指定表中刪除多行。

以上是如何在 PHP 中使用複選框正確刪除多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn