我需要一点帮助,使用ajax从jquery数组中的数据更新mysql表。我试过搜索类似的问题,但找不到任何东西,或者我可能不知道正确的搜索条件...我仍然是网络开发/编码的新手。
我会尽可能清楚地解释我想要做的事情。我有一个带有座位的页面,用户通过点击它们来选择,点击后,座位ID会添加到页面左侧某种购物车区域的自己的span标签中。这很好用。
结帐时,我的js文件能够在数组中获取这些座位ID,但是从这里我不确定如何正确地将此数组发送到php文件,然后从php文件中读取座位ID数组并更新相关的席位行以将可用性从1更改为0(这是使用ajax)。
这是我的代码:
checkout.js
$(document).ready(function(){
$('#checkout').click(function(){
var status = sessionStorage.getItem("username");
if(sessionStorage.getItem("username")){
var tickets = [];
$("#myTickets").find("span").each(function(){ tickets.push(this.id); });
var type = "POST",
url = "scripts/sendSeatDetails.php";
console.log(tickets);
$.ajax ({
url:url,
type:type,
data:tickets,
success: function(response){
if(response == 5){
alert("Seat update query failed");
} else {
alert("success");
}
}
});
} else {
alert("Before purchasing please log in. If you do not have an account please register.");
}
});
});
在控制台日志中显示:[“A2”,“A3”,“A4”](如果我选择了ID为A2,A3,A4等的座位)。
sendSeatDetails.php
<?php
include("dbconnect.php");
$myseats=$_POST['tickets'];
$query="update seats set status='0' where seatnum=";
for($i=0;$i<count($myseats);$i++){
$query.="'$myseats[$i]'";
if($i<count($myseats)-1){
$query.=" || seatnum=";
}
}
$link = mysql_query($query);
if (!$link) {
echo 5;
}
?>
这将返回显示成功的警报,但由于表未更新,因此不是这样。任何人都可以帮我这个或指出我正确的方向吗?
感谢您的帮助,希望将来能够在我的技能水平更高的情况下为本网站做出贡献。
非常感谢。
答案 0 :(得分:0)
要在jQuery中发送数组,您必须对其进行序列化,然后在PHP文件中解析它:
data: tickets.serialize(),
...
parse_str($_POST['data'], $data);
然后你将它视为一个普通的数组。
答案 1 :(得分:0)
逐个运行更新查询。
$myseats=$_POST['tickets'];
$flag=0;// Total successful updates
$myseats=explode(',',$myseats);
for($i=0;$i<count($myseats);$i++){
$query="update seats set status=0 where seatnum='".$myseats[$i]."'";
$link = mysql_query($query);
if (!$link) {
$flag=$flag+1;
}
}
echo $flag;die;
检查回复。它将是更新行的数量。