使用ajax使用jquery数组更新mysql数据库

时间:2014-11-24 14:52:27

标签: javascript php jquery mysql ajax

我需要一点帮助,使用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;
}
?>

这将返回显示成功的警报,但由于表未更新,因此不是这样。任何人都可以帮我这个或指出我正确的方向吗?

感谢您的帮助,希望将来能够在我的技能水平更高的情况下为本网站做出贡献。

非常感谢。

2 个答案:

答案 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;

检查回复。它将是更新行的数量。