首頁 >後端開發 >PHP問題 >php中多選框批量刪除

php中多選框批量刪除

WBOY
WBOY原創
2023-05-07 12:57:07740瀏覽

在Web開發中,多重選取框(Checkbox)是常見的使用者互動元件。在一些需要批次處理資料的場景中,我們也常常使用多選框來實作批次操作。在PHP中,實作多選框的批次刪除操作是很常見的需求,本文將介紹如何使用PHP實作多選框批次刪除。

一、HTML頁面設計

使用多重選取框實作批次刪除需要在HTML頁面中新增多個多選框,同時加入一個「刪除」按鈕。下面是一個簡單的HTML頁面範例,其中使用了Bootstrap框架以美化頁面:

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>多选框批量删除</title>
   <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
</head>
<body>
   <div class="container mt-5">
       <h1>多选框批量删除</h1>
       <form method="post" action="delete.php">
           <div class="row">
               <div class="col-sm">
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="1">
                       <label class="form-check-label">选项1</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="2">
                       <label class="form-check-label">选项2</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="3">
                       <label class="form-check-label">选项3</label>
                   </div>
               </div>
               <div class="col-sm">
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="4">
                       <label class="form-check-label">选项4</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="5">
                       <label class="form-check-label">选项5</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="6">
                       <label class="form-check-label">选项6</label>
                   </div>
               </div>
           </div>
           <div class="mt-3">
               <button type="submit" class="btn btn-danger">删除选中项</button>
           </div>
       </form>
   </div>
   <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
   <script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.9.3/umd/popper.min.js"></script>
   <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>

這個頁麵包含了6個多選框以及一個「刪除選取項目」的按鈕。每個多重選取框的name屬性都為“ids[]”,這樣當使用者選取多個選項之後,我們就可以使用$_POST['ids']來取得所有選取項目的ID。

二、PHP實作

在HTML頁面中我們設定了一個form表單,並指定了處理表單的PHP檔案為「delete.php」。以下就來看看如何在delete.php檔案中處理表單提交和實作批次刪除操作。

首先需要取得使用者在頁面上選擇的多重選取框的值(即選取項目的ID)。我們可以使用$_POST['ids']來取得這個值,這裡的「ids」對應了HTML頁面中多重選取框的name屬性。

$ids = $_POST['ids']; // 获取多选框选中项的ID值

接下來需要判斷使用者是否選取了要刪除的資料項,並執行刪除操作。這裡我們可以透過遍歷選取項目的ID,依序刪除對應的資料。這裡假設我們有一個students表,其包含id、name和age三個字段,我們需要刪除其中id在選取項目ID列表中的所有記錄。

if (!empty($ids)) {
   $dsn      = "mysql:host=localhost;dbname=test;charset=utf8";
   $username = "root";
   $password = "root";
   try {
       $pdo = new PDO($dsn, $username, $password);
   } catch (PDOException $e) {
       die("连接数据库失败:" . $e->getMessage());
   }
   $ids_str = implode(",", $ids); // 将选中项的ID值连接成逗号分隔的字符串
   $sql     = "DELETE FROM students WHERE id IN ($ids_str)"; // 生成删除语句
   $res     = $pdo->exec($sql); // 执行删除操作
   echo "成功删除 $res 条数据"; // 输出删除结果
}

在上面的程式碼中,首先判斷使用者是否選取了要刪除的資料項目(即$_POST['ids']是否為空),如果不為空則進行資料庫連接,並將選中項目的ID值使用implode()函數連接為逗號分隔的字串。接著使用DELETE FROM...WHERE...語句產生刪除語句,將選取項目的ID值作為WHERE條件進行刪除操作。最後輸出刪除結果。

三、完整程式碼

上面的程式碼片段只是實作了刪除操作的核心部分,以下是完整的delete.php程式碼:

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>多选框批量删除</title>
   <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
</head>
<body>
   <div class="container mt-5">
       <h1>多选框批量删除</h1>
       <?php
       if (!empty($_POST)) {
           $ids = $_POST['ids'];
           if (!empty($ids)) {
               $dsn      = "mysql:host=localhost;dbname=test;charset=utf8";
               $username = "root";
               $password = "root";
               try {
                   $pdo = new PDO($dsn, $username, $password);
               } catch (PDOException $e) {
                   die("连接数据库失败:" . $e->getMessage());
               }
               $ids_str = implode(",", $ids);
               $sql     = "DELETE FROM students WHERE id IN ($ids_str)";
               $res     = $pdo->exec($sql);
               echo "<div class='alert alert-success'>成功删除 $res 条数据</div>";
           } else {
               echo "<div class='alert alert-danger'>请至少选择一条数据</div>";
           }
       }
       ?>
       <form method="post" action="">
           <div class="row">
               <div class="col-sm">
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="1">
                       <label class="form-check-label">选项1</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="2">
                       <label class="form-check-label">选项2</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="3">
                       <label class="form-check-label">选项3</label>
                   </div>
               </div>
               <div class="col-sm">
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="4">
                       <label class="form-check-label">选项4</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="5">
                       <label class="form-check-label">选项5</label>
                   </div>
                   <div class="form-check">
                       <input class="form-check-input" type="checkbox" name="ids[]" value="6">
                       <label class="form-check-label">选项6</label>
                   </div>
               </div>
           </div>
           <div class="mt-3">
               <button type="submit" class="btn btn-danger">删除选中项</button>
           </div>
       </form>
   </div>
   <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
   <script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.9.3/umd/popper.min.js"></script>
   <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>

這段程式碼在HTML頁面中嵌入了PHP程式碼,用於顯示刪除結果。同時在form表單中action屬性不填寫,這樣表單會提交到目前頁面,方便我們處理資料。當使用者提交表單時,會先執行PHP程式碼中的判斷邏輯,然後執行刪除操作。最後根據執行結果,向使用者顯示刪除結果。

四、總結

在PHP中使用多選框實現批次刪除操作比較常見,是我們在Web開發中經常需要用到的技術。在本文中,我們介紹如何使用PHP實作多選框批次刪除操作,並說明了具體的實作步驟。希望本文對於初學者們能夠提供一些參考和幫助。

以上是php中多選框批量刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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