批量删除
多条数据一同删除,叫做批量删除
首先我们需要做一张nation表,和之前得一样,连接数据库,表中是两列,代号和名称,行随便先加点,在最前面再给它加一列,加复选框,最上面一行写个全选的复选框,再在表下面放一个删除的按钮
<body> <form action="piliangshanchu.php" method="post"> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <tr> <td><input type="checkbox" id="qx" onclick="xuanzhong()"/>全选</td> <td>代号</td> <td>名称</td> </tr> <?php include("./fengzhuang1.php"); $db = new fengzhuang(); $sql = "select * from nation"; $attr = $db->Query($sql); foreach($attr as $v) { echo "<tr> <td><input type = 'checkbox' name='ck[]' class='ck' value='{$v[0]}'/></td> <td>{$v[0]}</td> <td>{$v[1]}</td> </tr>"; } ?> </table> <input type="submit" value="删除" onclick="return tishi()" /> </form> </body>
和以前插入数据库的表是一样的,先把整体做出来,这里还要做js,一个是控制复选框的,另一个是点击删除按钮时,弹出的对话框,其实在删除后面直接添加一个onclick="return confirm('确定删除么')" 就可以,但是为了让它显示的更具体一点,我们采用js的方法,下面来看一下js部分的代码
<script type="text/javascript"> function xuanzhong() { //取全选按钮的选中状态 var zt = document.getElementById("qx").checked; //让下面所有的checkbox选中状态改变 var ck = document.getElementsByClassName("ck"); for(var i= 0;i<ck.length;i++) { if(zt) { ck[i].setAttribute("checked","checked"); } else { ck[i].removeAttribute("checked"); } } } function tishi() { //找所有选中项 var ck = document.getElementsByClassName("ck"); var str = ""; for(var i = 0; i<ck.length;i++) { if(ck[i].checked) { str += ck[i].value+","; } } return confirm("确定要删除以下数据么:"+str+""); } </script>
既然要删除按键,就得有个from表单,把它提交到另一个页面
新建一个页面,里面只写php内容
<?php $ck = $_POST["ck"]; include("./fengzhuang.php"); $db = new fengzhuang(); /*foreach($ck as $v) { $sql = "delete from nation where code='{$v}'"; $db->Query($sql,0); }*/ //第二种方式 $str = implode("','",$ck); $str = "('{$str}')"; $sql = "delete from nation where code in {$str}"; $db->Query($sql,0); header("location:piliang.php");
两种方法都可以用,
第一种是用一个循环,每次找到个主健然后删掉,缺点就是要执行好多遍
第二种是用拼接字符串的形式
最后都是跳转到第一个页面
现在我们来看一下操作的效果
一个非常简单的nation表,表中的内容可以随便写,当我们点击全选时:
复选框的按钮则全部选中,当再次点击全选时,
选中则全部取消
我们再来看一下点击删除时,会弹出什么样的对话窗
全部选中时,对话框会显示全部选中者的代号
当选中第一个和第四个的时候,弹出的对话框也对应的显示他们的代号,也就是主键值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?