Мне нужна небольшая помощь в обновлении таблицы mysql из данных в массиве jquery с использованием ajax. Я пробовал искать похожие проблемы, но ничего не нашел, или, может быть, я не знаю правильных терминов для поиска... Я все еще новичок в веб-разработке/кодировании.
Я постараюсь объяснить, что я пытаюсь сделать так ясно, как я могу. У меня есть страница с местами, которые пользователи выбирают, щелкая по ним, при нажатии идентификатор места добавляется в собственный тег span в своего рода области корзины покупок в левой части страницы. Это прекрасно работает.
При оформлении заказа мой файл js может получить эти идентификаторы мест в массиве, но отсюда я не уверен, как правильно отправить этот массив в файл php, а затем для файла php прочитать идентификаторы мест из массива и обновите соответствующие строки мест, чтобы изменить доступность с 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"] (если я выбрал места с идентификатором 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 ответа
Чтобы отправить массив в 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;
Проверьте ответ. это будет количество обновленных строк.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.
mysql_*
, Они больше не поддерживаются и официально устарели. Узнайте о подготовленных операторах взамен и используйте PDO или MySQLi. Вы также захотите Предотвратить SQL-инъекцию!<?php tag error_reporting(E_ALL); ini_set('display_errors', 1);
. Кроме того, добавьте отчеты об ошибках для ваших функций MySQL.