刚学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="删除" />

<?php

 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 后台批量删除问题的主要内容,如果未能解决你的问题,请参考以下文章

php批量删除cookie的简单实现方法

php批量删除

WordPress如何批量删除垃圾评论

php批量删除

vue项目中表格中批量删除

如何快速批量删除Mysql数据库中的数据表