刚学php 后台批量删除问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚学php 后台批量删除问题相关的知识,希望对你有一定的参考价值。
后台批量删除只能删除一条数据,因为刚学代码较乱= =!
//批量删除开始
if($_GET['xzdel']=1)
if($delete=$db->delete('t_news','where n_id in("'.$_POST['BoxUser'].'")'))
alert('删除成功','new_list.php');
exit();
else
echo $sql;
//js部分
<SCRIPT language=javascript>
//把复选框全选或反选。
function CheckAll(elementsA,elementsB)
var len = elementsA;
if(len.length > 0)
for(i=0;i<len.length;i++)
elementsA[i].checked = true;
if(elementsB.checked ==false)
for(j=0;j<len.length;j++)
elementsA[j].checked = false;
else
len.checked = true;
if(elementsB.checked == false)
len.checked = false;
//这个的作用是判断是否选择了复选框。
function Check1(form)
var flag = false;
var len = self.document.all.item("BoxUser");
var path ="";
if(len.length > 0)
for(j=0;j<len.length;j++)
if(self.document.all.item("BoxUser",j).checked)
flag = true;
if(!flag)
alert("请选择要删除的项目");
return false;
else
if(len.checked == false)
alert("请选择要删除的项目");
return false;
if(confirm("确定要删除吗?"))
form.action = "new_list.php?xzdel=1";//这里需要更改文件的名称
form.submit();
</SCRIPT>
表单部分
每行都有个选框<input name='BoxUser' type='checkbox' value='".$row['n_id']."'>
点击删除<input type="checkbox" name="checkbox" onclick="CheckAll(this.form.BoxUser,this.form.checkbox)" />
[全选/反选] <input type="submit" name="Submit" onclick="Check1(Del_User)" value="删除" />
if ( $_GET['xzdel'] == 1 ) //这里要使用比较运算符 == , 而不是赋值运算符 =
$N_ID = join(',', $_POST['BoxUser'] ); //$_POST本身是一个数组, 要达到批量删除的话, 这里应该要将BoxUser已数组形式提交, 那么,这个时候就是个二维数组, 那么$_POST['BoxUser']得到的还是一个数组, 那么,为了适应sql语句的语法, 把数组转换成以逗号为分隔符的字符串, 因为sql语句的in关键词只能接受如 1, 2, 3这样的参数,不能直接接受数组, mysql没有数组的概念
if ( $db -> delete( 't_nws', 'where n_id in(' . $N_ID . ')' ) )
alert('删除成功', 'new_list.php');
die;
else
echo $sql;
以上是php部分,其他部分有空给你研究研究
表单部分:
<input name='BoxUser' type='checkbox' value='".$row['n_id']."'>这个name属性,要以数组的形式进行提交, 这样, php才会将你勾选的所有参数给提交
否则php只能接收到其中的一条
那么,应该改成
<input name='BoxUser[]' type='checkbox' value='".$row['n_id']."'>追问这个我选择全选的话,js改怎么处理呢?
追答js不变,如果你之前可以运行的话!
参考技术A 每行都有个选框<input name='BoxUser' type='checkbox' value='".$row['n_id']."'> 因为是多个选框,所以选框名称应该为BoxUser[]变成<input name='BoxUser[]' type='checkbox' value='".$row['n_id']."'>。这样php中才能获取数组,然后在php部分$ids = implode(" ,",$_POST['BoxUser']);
if($delete=$db->delete('t_news','where n_id in("'.$ids.'")'))
这样就可以了追问
可是这样的话,js判断就不行了,大神,我刚学两天,真心不会
php批量删除
php批量删除可以实现多条或者全部数据一起删除
新建php文件 显示数据库中内容:
<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("DBDA.class.php"); $db = new DBDA(); $sql = "select areacode,areaname 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>
DBDA.class.php文件为数据库查询的类文件:
<?php class DBDA { public $host="localhost"; public $uid = "root"; public $pwd = ""; public $dbname = "12345"; //成员方法 public function Query($sql,$type=1) { $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); $r = $db->query($sql); if($type==1) { return $r->fetch_all(); } else { return $r; } } }
在表格 中加入选择复选框:
<td><input type="checkbox" id="qx" onclick="xuanzhong()" />全选</td>
<td><input type=\'checkbox\' name=\'ck[]\' class=\'ck\' value=\'{$v[0]}\' /></td>
显示:
用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"); } } } </script>
表格外侧追加form表单和提交按钮,并且用js控制点击删除时显示详细的提示信息完整php代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> </head> <body> <form action="shanchu.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("DBDA.class.php"); $db = new DBDA(); $sql = "select areacode,areaname from chinastates"; $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> <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> </html>
最后新建删除处理的php文件;
<?php $ck = $_POST["ck"]; include("DBDA.class.php"); $db = new DBDA(); //第一种方式 /*foreach($ck as $v) { $sql = "delete from nation where code=\'{$v}\'"; $db->Query($sql,0); }*/ //第二种方式 //in (\'\',\'\',\'\',\'\',\'\') $str = implode("\',\'",$ck); $str = "(\'{$str}\')"; $sql = "delete from nation where code in {$str}"; $db->Query($sql,0); header("location:main.php");
点击确定:
批量删除成功!
以上是关于刚学php 后台批量删除问题的主要内容,如果未能解决你的问题,请参考以下文章