我让AJAX每5秒运行一次查询,检查用户是否已经请求与教练进行会话。如果有弹出对话框。脚本更改字段,以便它不会捕获相同的会话请求,但它似乎不关心字段是否为空,它只是一直运行通过PHP脚本。这是ajax和php代码。
setInterval(function() {
$.ajax({
type: "GET",
url: "includes/checksessionrequests.php",
success: function(msg){
if(msg == "yes") {
$(\'$<div title="Request Recieved"></div>\').load(\'requestreceived.php\').dialog({modal: true, closeOnEscape: false, open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }, height: 300, width: 480, hide: {effect: "fade", duration: 1000}, show: {effect: "fade", duration: 1000}});
}
}
});
查询
<?php
session_start();
$user = $_SESSION['username'];
include("dbcon.php");
$result = mysql_query("SELECT * FROM sessionrequests
WHERE coach='$user'
AND sessionstatus=''
ORDER BY id") or die(mysql_error());
$row = mysql_fetch_assoc($result);
$sessionstatus = $row['sessionstatus'];
$sessionid = $row['id'];
if($sessionstatus != "") {
die("no");
}
elseif($sessionstatus == "")
{
$result = mysql_query("UPDATE sessionrequests
SET sessionstatus='received'
WHERE id='$id'");
echo "yes";
}
mysql_close($con);
?>
答案 0 :(得分:2)
您没有检查查询是否实际成功或者查询是否返回匹配项。如果发生这些情况之一,我相信$ sessionstatus将被设置为NULL,从而跳过你的if和elseif语句。我仍然不太熟悉PHP的弱类型以及NULL是否评估为“”。但是,值得一试。 : - )
我会尝试这样的事情:
$result = mysql_query("SELECT * FROM sessionrequests......");
if ($result) { // Query executed successfully
if (mysql_num_rows($result) > 0) { // Matches returned
$row = mysql_fetch_assoc($result);
$sessionstatus = $row['sessionstatus'];
$sessionid = $row['id'];
// Rest of your code
}
}
mysql_close($con);
答案 1 :(得分:0)
您的查询仅抓取数据WHERE coach='$user' AND sessionstatus=''
。 $sessionstatus
总是 ""
因此if($sessionstatus != "") { die("no"); }
从不被调用。
我仍然不明白这个问题。它只收集尚未收到的请求,并将第一个请求标记为received
。这不是你想要它做的吗?究竟是什么问题?