我正在制作购物清单,我已经有了删除单个项目的功能,截至目前,我在使用复选框删除多个项目时遇到问题。我的项目表由itemName,itemId和listId
组成我正在使用ajax jquery
删除多个JS功能
function deleteMultiple(){
$("#deleteMultiple").click(function(){
var itemsDelete = new Array();
$("input:checkbox:checked").each(function() {
itemsDelete.push( $(this).val() );
});
$.ajax({
type: "POST",
url: "deleteMultiple.php",
data: { itemsDelete : itemsDelete },
cache: false,
success: function(){
}
});
return false;
});
}
}
PHP函数吐出特定列表中的所有项目
$sql = ("SELECT listId FROM list WHERE listName = '$listName' LIMIT 1");
$result = mysqli_query($conn,$sql) or die(mysql_error());
while($row = mysqli_fetch_assoc($result)) {
$_SESSION['listIdIn'] = $row['listId'];
}
$sql = "(SELECT itemName FROM item WHERE listId =". $_SESSION['listIdIn'] .")";
$result = mysqli_query($conn,$sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo "<li><input name = 'checkbox[]' type='checkbox' value ='" . $row["itemName"]. "'>" . $row["itemName"]. "</input><input type='button' class='deleteItem' Value='Delete'/></li>";
}
} else {
return null;
}
和PHP函数删除多个项目
$sql="SELECT * FROM item";
$result=mysqli_query($conn,$sql);
$count=mysqli_num_rows($result);
for($i=0;$i<$count;$i++){
$itemsDelete = $_REQUEST['itemsDelete'];
$sql = "DELETE FROM 'item' WHERE itemName = '$itemsDelete'";
$result = mysqli_query($conn,$sql);
}
谢谢
更新:所以我改变了我的deleteMultiple.php,这里是代码现在的样子
$itemsDelete = $_REQUEST['itemsDelete'];
var_dump ($itemsDelete);
for ($i = 0; $i < count($itemsDelete); $i++){
$itemsDeleteName = $itemsDelete[$i];
$sql = "DELETE FROM 'item' WHERE 'itemName' IN (//I read from some article I have to use implode, I tried but it's not working) AND 'listId' = ".$_SESSION['listIdIn'];
mysqli_query($conn,$sql);
}
var_dump给出了这个结果
array(3) { [0]=> string(5) "item3" [1]=> string(5) "item4" [2]=> string(9) "iteeeemmm" }
到目前为止,通过单击删除按钮,我可以将值传递给multipleDelete.php,我可以将值传递给php数组,现在的问题是,我无法使用php数组中的值并删除MySQL数据库< / p>
答案 0 :(得分:0)
我将回答问题的一部分,这很清楚。 请注意您可能还有其他问题,这肯定是其中之一。但是,为了帮助您,必须发布更多信息。缩小问题范围,使用var_dump
,浏览器控制台等
在你的jQuery中,你没有正确设置/推送正确的变量。更改此部分:
// Here you declare the variable itemsDelete. This is fine.
var itemsDelete = new Array();
// Note it's preferable to declare the variable like so:
// var itemsDelete = [];
$("input:checked").each(function() {
// Here you are pushing onto an array called data. You didn't declare that, so replace it...
// data['itemsDelete[]'].push($(this).val());
itemsDelete.push( $(this).val() );
});
您的AJAX似乎没问题。
您的PHP中存在一些拼写错误/问题(在某些地方您使用mysqli_
,而在其他地方使用mysql_
。
(注意:为什么在声明数组时使用数组文字表示法,请参阅this SO answer)