ホームページ >バックエンド開発 >PHPの問題 >PHPでの複数選択ボックスの一括削除

PHPでの複数選択ボックスの一括削除

WBOY
WBOYオリジナル
2023-05-07 12:57:07739ブラウズ

Web 開発では、チェックボックスは一般的なユーザー インタラクション コンポーネントです。データのバッチ処理が必要な一部のシナリオでは、複数選択ボックスを使用してバッチ操作を実装することがよくあります。 PHP では、複数選択ボックスの一括削除を実装することが非常に一般的な要件です。この記事では、PHP を使用して複数選択ボックスの一括削除を実装する方法を紹介します。

1. HTML ページのデザイン

複数選択ボックスを使用して一括削除を行うには、HTML ページに複数の複数選択ボックスを追加し、同時に「削除」ボタンを追加する必要があります。以下は、Bootstrap フレームワークを使用してページを美しくする簡単な HTML ページの例です。

<!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 を取得できます。

2. PHP の実装

HTML ページにフォームフォームを設定し、そのフォームを処理するための PHP ファイルを「delete.php」として指定します。フォームの送信を処理し、delete.php ファイルにバッチ削除操作を実装する方法を見てみましょう。

まず、ページ上でユーザーが選択した複数選択ボックスの値 (つまり、選択された項目の ID) を取得する必要があります。 $_POST['ids'] を使用してこの値を取得できます。ここで、「ids」は HTML ページの複数選択ボックスの name 属性に対応します。

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

次に、ユーザーが削除するデータ項目を選択したかどうかを判断し、削除操作を実行する必要があります。ここでは、選択した項目の ID をたどることで、対応するデータを 1 つずつ削除できます。ここでは、id、name、age の 3 つのフィールドを含む Students テーブルがあると仮定し、選択したアイテム 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 条件として使用して削除操作を実行します。最後に削除結果を出力します。

3. 完全なコード

上記のコード スニペットは、削除操作のコア部分のみを実装しています。以下は完全な 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 コードがページに埋め込まれています。同時に、フォームに action 属性を入力しないでください。これにより、フォームは現在のページに送信され、データの処理が容易になります。ユーザーがフォームを送信すると、まずPHPコード内の判定ロジックが実行され、その後削除操作が実行されます。最後に、実行結果に基づいて、削除結果がユーザーに表示されます。

4. 概要

PHP で一括削除操作を実装するには複数選択ボックスを使用するのが一般的であり、Web 開発で頻繁に使用する必要があるテクノロジです。この記事では、PHPを使用して複数選択ボックスの一括削除を実装する方法を紹介し、具体的な実装手順を説明します。この記事が初心者の方の参考になれば幸いです。

以上がPHPでの複数選択ボックスの一括削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。