如何使用php和ajax删除多条记录
Posted
技术标签:
【中文标题】如何使用php和ajax删除多条记录【英文标题】:How to delete multiple records using php and ajax 【发布时间】:2016-06-16 20:41:52 【问题描述】:当我使用 php 显示新闻时,我有多行新闻。我正在尝试使用每行旁边的复选框同时删除多行。
这是我的 php 代码
<?
$select_news = $mysqli->query("SELECT * FROM news order by time desc limit $x,$numbershownews");
while ($rows_news = $select_news->fetch_array(MYSQL_ASSOC))
$id_news = $rows_news ['id'];
$title_news = $rows_news ['title'];
?>
<table>
<tr rel="<? echo $id_news; ?>">
<td class="tdtable" id="<? echo $id_news; ?>" >
<input type="checkbox" rel="<? echo $id_news; ?>" name="checkbox[]" class="checkboxtable" value="<? echo $id_news; ?>">
</td>
<td class="tdtable" id="<? echo $id_news; ?>" >
<? echo $title_news; ?>
</td>
</tr
</table
<?
?>
<button class="deletecheckednews">Delete</button>
这是jquery代码
$(".deletecheckednews").on( 'click', function ()
var arr = new Array();
$(".checkboxtable:checked").each(function ()
arr.push($(this).attr("rel"));
);
if(arr == "")
alertify.error("no selected news");
else
$.ajax(
type: "POST",
url: "action/delete_multiple_news.php",
data: arr ,
cache: false,
success: function(data)
alertify.success(data);
$.each(arr, function(key, value)
$("tr[rel="+value+"]").fadeOut();
);
);
return false
);
如何将此数组传递给“delete_multiple_news.php”?我试过这个$checkedneww = $_REQUEST['arr'];
和这个$checkedneww = $_POST['arr'];
但它不起作用。我将如何删除选定的行?
【问题讨论】:
error_log(print_r($_POST,1));
这样您就可以看到您正在处理的数据结构。
我会把它放在这里作为奖励。 en.wikipedia.org/wiki/Indent_style
你的代码中的alertify.success(data);
mens 是什么?请显示delete_multiple_news.php
的代码
【参考方案1】:
开启
$.ajax(
type: "POST",
url: "action/delete_multiple_news.php",
data: "array_del": arr , / <-
cache: false,
success: function(data)
alertify.success(data);
在 PHP 中使用
$array_del = filter_input(INPUT_POST, 'array_del', FILTER_SANITIZE_STRING);
如果您想查看结果,请执行以下操作:
在 PHP ajax 中:
$array_del = filter_input(INPUT_POST, 'array_del', FILTER_SANITIZE_STRING);
echo json_encode($array_del);
在js中:
$.ajax(
type: "POST",
url: "action/delete_multiple_news.php",
data: arr ,
cache: false,
success: function(data)
alertify.success(data);
console.debug(data);
//$.each(arr, function(key, value)
// $("tr[rel="+value+"]").fadeOut();
//);
);
要删除你可以在sql中使用WHERE来过滤你想要删除的结果示例。如果结果不止一个,则创建一个循环或一个公共列。
$mysqli->query(DELETE FROM table_name WHERE some_column = $array_del[some_column]);
【讨论】:
【参考方案2】:您在 ajax 调用 (data: arr
) 中传递了一个原始数组,但您需要一个命名变量 ($_POST['arr']
)。
我不确定 jquery 是否可以使用 data: arr
(多年未使用它),但如果可以,那么您要查找的 ids 数组就是整个 $_POST
。
如果不是这样,或者你想做$_POST['arr']
,你应该把你的JS改成data: arr: arr
。
【讨论】:
以上是关于如何使用php和ajax删除多条记录的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Entity Framework ASP.Net MVC 5 删除多条记录? [关闭]