2011-04-28 50 views
1

背景:我們正在啓動一個將由來自不同大學的學生參加的活動。一個網絡應用程序會報告參加活動的學生人數。實時更新Web系統 - Ajax,PHP,MySQL

基本的網絡佈局

enter image description here

我希望所需的佈局是明確的。這需要每5分鐘刷新一次,以便在新學生註冊時顯示。我使用Ajax setTimeout()方法完成了刷新部分 。我有表Student。我使用的查詢是:

SELECT UNIV, STUDENT_NAME, STUDENT_EMAIL 
     FROM STUDENT 
     ORDER BY UNIV; 

然而,主要的問題是確定時,在表中添加新行和顯示細節 問題1:目前,我在做什麼是有$currUniv變量,它是指大學的當前價值。如果$currUniv值和當前行獲取的不匹配,我創建一個新的行

代碼:在updater.php

function updateTable() 
{ 
    $currUniv = ""; 
    while($currLine = mysql_fetch_array($results)) 
    { 
     if (strcmp($currLine[0], $currUniv) != 0) 
     { 
     responseHTML .= "<tr id = \"{$currLine[0]}\">"; 
     responseHTML .= "<td id = \"{$GLOBALS["univ"]}\">"; 
     responseHTML .= "{$currLine[0]}"; 
     responseHTML .= "</td>"; 
     $currUniv = $currLine[0]; 
     } 
     responseHTML .= "<td id = \"{$GLOBALS["studentname"]}\">"; 
     responseHTML .= "{$currLine[1]}"; 
     responseHTML .= "</td>"; 
     responseHTML .= "<td id = \"{$GLOBALS["studentemail"]}\">"; 
     responseHTML /= "{$currLine[2]}"; 
     responseHTML .= "</td>"; 
     if (strcmp($currLine[0], $currUniv) != 0) 
     { 
     responseHTML .= "</tr>"; 
     } 
    } 
} 

首先,不顯示錶。我不認爲這是創建表格的最佳算法。任何人都可以提出任何其他方法來實現相同?

回答

1

看起來你沒有打開足夠的tr和td標籤,如果大學名稱與前一行匹配。確保兩種情況下生成的標籤數量完全相同。最好使用else。單元格可能爲空,但您必須生成它們。

也有沒有任何有效的原因,你不按一個大學內的學生姓名排序你的結果?這只是查詢中的一個小改動 - ORDER BY UNIV,STUDENT_NAME。 如果沒有它,你不能依賴mysql給你的命令,它只會拋出學生任何它認爲最快的順序,特別是當表變大時。

如果這是您需要更新的唯一東西,那麼它不夠複雜,無法給出將代碼更改爲必須從頭開始學習的內容的理由。

+0

問題是我無法將新記錄附加到表中的現有行。即假設有一個新的用戶記錄進入A大學,我使用'tr id =「A」'標記將新記錄附加到表中,最終在HTML靜態內創建一個新行。 – 2011-04-28 12:45:13