Функция «До загрузки» не работает И не обновляет записи после выгрузки

Вот мой код

function myfoo() {
$.ajax({
type: "POST",
url: "update.php",
dataType: 'json',
async: false,
data: {
Eventid: 1,
Seats: 'Seats'
},
success: function(r) {}
});
}

$(window).on('beforeunload', function() {
return 'Are you sure you want to leave?';
});
$(window).on('unload', function() {
console.log('calling ajax');
myfoo();
});

код update.php

<?php
session_start();
include 'conn.php';

if(isset($_SESSION['Seats'])) {
$seatS=$_SESSION['Seats'];
$Eventid=$_SESSION['Eventid'];
$cats = explode(" ", $seatS);
$cats = preg_split('/,/', $seatS, -1, PREG_SPLIT_NO_EMPTY);
foreach($cats as $key => $cat ) {
$cat  = mysql_real_escape_string($cats[$key]);
$cat = trim($cat);
if($cat !=NULL) {
$stmt = $con->prepare('UPDATE fistevent SET `Status`=" " where `Event_Id`=? AND `seats`="'.$cat.'" AND `Status`="Hold" ');
$stmt->bind_param("s", $_SESSION['Eventid']);
$stmt->execute();
session_destroy();
}
}
}

?>

-1

Решение

AJAX data: параметры вводятся в $_POSTне $_SESSION,

Вы не можете использовать mysql_real_escape_string если вы используете mysqli, Вам не нужно экранировать параметры при использовании bind_param(), И вы можете использовать explode() вместо preg_split(), поскольку в вашем разделителе нет шаблона регулярного выражения; array_filter() может быть использован для удаления пустых записей.

<?php
include 'conn.php';

if(isset($_POST['Seats'])) {
$seatS=$_POST['Seats'];
$_SESSION['Seats'] = $seatS;
$Eventid=$_POST['Eventid'];
$_SESSION['Eventid'] = $Eventid;
$cats = array_filter(array_map('trim', explode(',', $seatS)));
$stmt = $con->prepare('UPDATE fistevent SET `Status`=" " where `Event_Id`=? AND `seats`= ? AND `Status`="Hold" ') or die($con->error);
$stmt->bind_param("ss", $_POST['Eventid'], $cat);
foreach($cats as $key => $cat ) {
$stmt->execute();
}
}
?>
1

Другие решения

Вот мой код

function myfoo() {
$.ajax({
type: "POST",
url: "update.php",
dataType: 'json',
async: false,
data: {
Eventid: 1,
Seats: 'Seats'
},
success: function(r) {}
});
}

$(window).on('beforeunload', function() {
return 'Are you sure you want to leave?';
});
$(window).on('unload', function() {
console.log('calling ajax');
myfoo();
});

код update.php

<?php
session_start();
include 'conn.php';

if(isset($_SESSION['Seats'])) {
$seatS=$_SESSION['Seats'];
$Eventid=$_SESSION['Eventid'];
$cats = explode(" ", $seatS);
$cats = preg_split('/,/', $seatS, -1, PREG_SPLIT_NO_EMPTY);
foreach($cats as $key => $cat ) {
$cat  = mysql_real_escape_string($cats[$key]);
$cat = trim($cat);
if($cat !=NULL) {
$stmt = $con->prepare('UPDATE fistevent SET `Status`=" " where `Event_Id`=? AND `seats`="'.$cat.'" AND `Status`="Hold" ');
$stmt->bind_param("s", $_SESSION['Eventid']);
$stmt->execute();
session_destroy();
}
}
}

?>
-1

AJAX data: параметры вводятся в $_POSTне $_SESSION,

Вы не можете использовать mysql_real_escape_string если вы используете mysqli, Вам не нужно экранировать параметры при использовании bind_param(), И вы можете использовать explode() вместо preg_split(), поскольку в вашем разделителе нет шаблона регулярного выражения; array_filter() может быть использован для удаления пустых записей.

<?php
include 'conn.php';

if(isset($_POST['Seats'])) {
$seatS=$_POST['Seats'];
$_SESSION['Seats'] = $seatS;
$Eventid=$_POST['Eventid'];
$_SESSION['Eventid'] = $Eventid;
$cats = array_filter(array_map('trim', explode(',', $seatS)));
$stmt = $con->prepare('UPDATE fistevent SET `Status`=" " where `Event_Id`=? AND `seats`= ? AND `Status`="Hold" ') or die($con->error);
$stmt->bind_param("ss", $_POST['Eventid'], $cat);
foreach($cats as $key => $cat ) {
$stmt->execute();
}
}
?>

active «data-shortcut =» A
самый старый «data-shortcut =» O
голосует «data-shortcut =» V
1
По вопросам рекламы [email protected]