2013-10-23 33 views
0

目前即時選擇使用以下php塊的最新更新的行,我有一個ajax循環運行此PHP塊每隔幾秒鐘返回饋送。我想在最新的時間戳沒有改變時將ajax回顯爲false,以便ajax不會重複結果並填充我的Div(#feed)相同的內容。如何只選擇行,如果表時間戳已更新

<?php 
require_once 'db_conx.php'; 
$Result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated desc limit 1") or die (mysql_error()); 
while($row = mysql_fetch_array($Result)){ 
echo $row['name']; 
} 
mysql_close($con); 
?> 
+3

我會存儲返回結果在客戶端/會話/等的最後時間戳。然後當AJAX調用觸發器發送最後一個時間戳以進行比較時。如果它沒有改變,則返回false。 – Crackertastic

回答

2

在會話的某個地方或請求者中,您需要存儲上次提取的時間。最好將它作爲會話變量存儲(我假定這是客戶端特定的,因爲不同的客戶端會在不同的時間加載),然後獲取所有其時間大於last_fetched時間的記錄。

每次從DB獲取條目,只需將last_fetched變量更新爲當前時間戳。

+0

良好的洞察力,請顯示一些代碼結構。 – Relm

0

當您從服務器檢索到結果時,我猜測您將最後一個查詢的時間戳存儲在某個PHP變量中,以便比較下一個查詢的返回結果。 我會串連時間戳到您的查詢作爲where子句讓你的SQL查詢將成爲類似

$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated > " . $timestamp . " ORDER BY lastupdated desc limit 1") or die (mysql_error()); 

另外值得一提的是,當這個執行,如果出現了自上次更新週期多個配置文件更新那麼它只會返回最近更新的行。 這是否回答你的問題?

+0

不,變量存儲和比較是我沒有得到的,我不存儲它。這就是我想知道如何去做的。 – Relm

1

如果運行這個每5秒,我會做類似

$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated > ADDTIME(NOW() , '-00:00:05.00000') ORDER BY lastupdated desc limit 1") or die (mysql_error()); 
$num_rows = mysql_num_rows($result); 
if ($num_rows = 0) { 
    return false; 
} else { 
    return true; 
} 

這會給你已在最後5秒被更新任何行,如果它是比這應該有舊在最後一次運行中被拾起。

希望這可以幫助

+0

看起來可行,你打算如何回覆沒有新內容的Ajax? – Relm

+0

修改我的答案,如果不是完全那麼類似的東西應該工作。 –