2011-09-25 140 views
-2

我有AJAX每5秒運行一次查詢,檢查用戶是否請求與教練進行會話。如果有,它會彈出一個對話框。該腳本更改該字段,以便它不會捕獲相同的會話請求,但似乎並不關心該字段是否爲空,它只是通過php腳本運行。這裏是ajax和php代碼。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); 
?> 

回答

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); 
+0

它確實找到一個匹配,因爲它更新sessionstatus以在更新查詢中收到,其中id = $ sessionid – vacarsu

+1

鍵入意味着「NULL ==」「'',但不是'NULL ===」「' – damianb

+0

工作。謝謝。 – vacarsu

0

您的查詢只抓取數據WHERE coach='$user' AND sessionstatus=''$sessionstatus總是""所以if($sessionstatus != "") { die("no"); }從來沒有叫。

我還是不知道’不過了解這個問題。它僅收集未收到的請求並將第一個這樣的請求標記爲received。 Isn ’你想要它做什麼?究竟是什麼問題?