2010-07-26 41 views
3

有人可以解釋如何創建一個自動更新數據庫中的值的.php頁面?會使用AJAX最適合這樣的事情嗎?我想要這個PHP代碼,但是我希望無論何時向'values01'添加或更改頁面,都無需刷新頁面即可更新頁面。
$query = "SELECT values01 FROM users WHERE username='$username'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo nl2br("{$row['values01']}");
}

任何幫助,將不勝感激! :)將AJAX用於包含來自數據庫的值的自動更新頁面?

回答

2

你所描述的將是來自Web服務器的推送通知。不幸的是,我還沒有找到一種可靠的方法來進行傳統推送,即網絡服務器將啓動與客戶端的連接(在我的有限研究中,似乎有支持推送的http標準的提案,但是,它並沒有看起來不像以前出現的廣泛採用的標準)。但是,這可以通過更迂迴的方式來完成。

周圍有推限制的方式,通常用於:

  1. 瀏覽器連接到網頁,加載了數據庫的當前「狀態」。會話變量(讓我們稱之爲$ _SESSION ['currentState'])與數據庫的起始狀態一起保存。客戶端瀏覽器上的JavaScript計時器開始計時(讓我們說定時器長10秒)。
  2. 一旦計時器到期,就會對服務器上的腳本進行AJAX調用。讓我們調用該腳本「updateValues.php」。 updateValues.php檢查數據庫的新狀態。如果數據庫與$ _SESSION ['currentState']不同,我們會以一些很好的形式(json,xml等)返回所做的任何更改,並用新狀態更新$ _SESSION ['currentState']。如果沒有變化,我們會在某種程度上回答一些問題。
  3. 接收到數據後,瀏覽器執行一些JavaScript,然後更新瀏覽器中的渲染(如果已更改數據庫),然後重新啓動計時器。
  4. 轉到2.

你是從一個典型的推送通知在這裏失蹤的唯一的事情,就是10秒(或任何你選擇你的定時器)滯後。

+0

你說什麼減去甚至擔心推。 – 2010-07-27 13:35:16

+0

@Talvi Watia:我不會完全說我對「推」感到「擔心」。只是指出OP描述了一個推式系統(用他的規格說明)。 – MarkD 2010-07-28 14:17:59