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


Update mysql database with jquery array using ajax

我需要一些帮助来使用 ajax 从 jquery 数组中的数据更新 mysql 表。我尝试搜索类似的问题,但找不到任何东西,或者我不知道要搜索的正确术语......我对网络开发/编码仍然相当陌生。

我会尽量清楚地解释我试图做什么。我有一个包含座位的页面,用户通过单击它们来选择座位,单击后,座位 ID 将添加到页面左侧一种购物车区域中自己的 span 标签中。这工作正常。

结帐时,我的 js 文件能够在数组中获取这些座位 ID,但从这里我不确定如何将此数组正确发送到 php 文件,然后让 php 文件从数组中读取座位 ID 并更新相关的座位行以将可用性从 1 更改为 0(这是使用 ajax)。

这是我的代码:

结帐.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 等的座位)。

发送座位详细信息.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;
}
?>

这将返回显示成功的警报,但事实并非如此,因为表未更新。谁能帮我解决这个问题或为我指出正确的方向?

感谢您的帮助,并希望将来当我处于更好的技能水平时能够为这个网站做出贡献。

非常感谢。

要在jQuery中发送数组,您必须对其进行序列化,然后在PHP文件中解析它:

data: tickets.serialize(),
...
parse_str($_POST['data'], $data);

然后你把它当作一个普通的数组。

逐个运行更新查询。

$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;

检查响应。它将是更新的行数。