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

Patricia Arquette
發布: 2024-10-28 07:23:02
原創
485 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板