Maison  >  Article  >  développement back-end  >  Suppression par lots de boîtes à sélection multiple en php

Suppression par lots de boîtes à sélection multiple en php

WBOY
WBOYoriginal
2023-05-07 12:57:07686parcourir

Dans le développement Web, la case à cocher est un composant d'interaction utilisateur courant. Dans certains scénarios nécessitant un traitement par lots des données, nous utilisons souvent des zones à sélection multiple pour implémenter des opérations par lots. En PHP, il est très courant d'implémenter la suppression par lots de zones à sélection multiple. Cet article explique comment utiliser PHP pour implémenter la suppression par lots de zones à sélection multiple.

1. Conception de page HTML

L'utilisation de zones à sélection multiple pour effectuer une suppression par lots nécessite l'ajout de plusieurs zones à sélection multiple à la page HTML et l'ajout d'un bouton "Supprimer". Voici un exemple simple de page HTML, qui utilise le framework Bootstrap pour embellir la page :

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

Cette page contient 6 zones de sélection multiple et un bouton "Supprimer l'élément sélectionné". L'attribut de nom de chaque zone à sélection multiple est "ids[]", donc lorsque l'utilisateur sélectionne plusieurs options, nous pouvons utiliser $_POST['ids'] pour obtenir les identifiants de tous les éléments sélectionnés.

2. Implémentation PHP

Dans la page HTML, nous avons configuré un formulaire et spécifié le fichier PHP pour traiter le formulaire comme "delete.php". Voyons comment gérer la soumission de formulaire et implémenter les opérations de suppression par lots dans le fichier delete.php.

Vous devez d'abord obtenir la valeur de la zone de sélection multiple sélectionnée par l'utilisateur sur la page (c'est-à-dire l'ID de l'élément sélectionné). Nous pouvons utiliser $_POST['ids'] pour obtenir cette valeur, où "ids" correspond à l'attribut name de la zone de sélection multiple dans la page HTML.

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

Ensuite, vous devez déterminer si l'utilisateur a sélectionné l'élément de données à supprimer et effectuer l'opération de suppression. Ici, nous pouvons supprimer les données correspondantes une par une en parcourant l'ID de l'élément sélectionné. Supposons ici que nous ayons une table d'étudiants, qui contient trois champs : identifiant, nom et âge. Nous devons supprimer tous les enregistrements dont l'identifiant se trouve dans la liste d'ID d'élément sélectionné.

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 条数据"; // 输出删除结果
}

Dans le code ci-dessus, déterminez d'abord si l'utilisateur a sélectionné l'élément de données à supprimer (c'est-à-dire si $_POST['ids'] est vide. S'il n'est pas vide, connectez-vous à la base de données et ajoutez le). Valeur ID de l'élément sélectionné Concaténer en chaînes séparées par des virgules à l'aide de la fonction implode(). Utilisez ensuite l'instruction DELETE FROM...WHERE... pour générer une instruction de suppression et utilisez la valeur ID de l'élément sélectionné comme condition WHERE pour effectuer l'opération de suppression. Enfin, le résultat de la suppression est affiché.

3. Code complet

L'extrait de code ci-dessus n'implémente que la partie principale de l'opération de suppression. Voici le code delete.php complet :

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

Ce code intègre le code PHP dans la page HTML pour afficher les résultats de la suppression. . Dans le même temps, ne remplissez pas l'attribut action dans le formulaire, afin que le formulaire soit soumis à la page actuelle, ce qui nous facilite le traitement des données. Lorsque l'utilisateur soumet le formulaire, la logique de jugement dans le code PHP sera exécutée en premier, puis l'opération de suppression sera exécutée. Enfin, en fonction des résultats de l'exécution, les résultats de la suppression sont affichés à l'utilisateur.

4. Résumé

Il est courant d'utiliser des boîtes à sélection multiple pour implémenter des opérations de suppression par lots en PHP, et c'est une technologie que nous devons souvent utiliser dans le développement Web. Dans cet article, nous expliquons comment utiliser PHP pour implémenter la suppression par lots de zones à sélection multiple et expliquons les étapes spécifiques de mise en œuvre. J'espère que cet article pourra fournir des références et de l'aide aux débutants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn