2011-12-16 95 views
-1

您好,我已經通過長輪詢,websockets和APE,Ajax推送,Ajax Pull。由於websockets的技術目前還沒有在我們的萬維網中引入。我想我會使用正常的setInterval函數來檢查數據庫。這是一個聊天應用程序,我的代碼: -如果在數據庫中添加新記錄,從數據庫檢索數據

Home.php的Javascript

$(document).ready(function(){ 

setInterval(function(){ 

var id = $id; // this is the id of the last message inserted in the database 

var data = 'id='+id; 

$.ajax({ 

type : "POST", 
url : "check.php", 
data : data, 
success : function(data){ 

if(data) 
{ 
$(".comments").append(data); 
} 

} 


}); 


},1000); 

check.php PHP代碼

$id = $_POST['id']; 

$get = mysql_query("SELECT * FROM messages WHERE id>'$id' ORDER BY id DESC"); 
$num2 = mysql_num_rows($get); 
$get2 = mysql_fetch_assoc($get); 
$id = $get2['id']; 

if($num2!=0) 
{ 


$username = $get2['username']; 
$a = mysql_query("SELECT * FROM people WHERE username='$username'"); 
    $n = mysql_num_rows($a); 
    $b = mysql_fetch_assoc($a); 

    $file = $b['filename']; 
    $pic = "<img src=\"images/" .$file. "\" width=\"40\" height=\"40\">"; 
$name = $get2['fullname']; 
$message = $get2['message']; 

echo $pic.$message."<br/>"; 
} 
else 
{ 
} 

如果在數據庫中插入了新記錄,我會t回顯正常,但它不會更新home.php頁面中的$ id,所以它會一次又一次地發送舊的id,並且評論會一次又一次地追加。

我想要的是。每隔一段時間。 home.php的$ id應該被更新,以便它僅將當前消息ID發送到check.php頁面。

+0

消毒您的輸入!我可以通過提交check.php來清除你的數據庫?id ='; drop table messages; - – 2011-12-16 20:39:33

+0

yea yea lol。我第一次做它作爲一個測試的事情,如果一切都會解決,那麼將進入安全部分;-)。反正謝謝你的提醒:) – Samir 2011-12-16 23:44:23

回答

0

我客串,你已經交了第一個代碼可在您的home.php模板和$ ID然後就與最後一個ID的實數代替。

這是第一次使用PHP處理頁面,但一旦下載到用戶計算機上,您只需要依靠JavaScript ... 我不確定您從哪種表單中收到數據.php,但你需要做類似

id = data.id 
data = 'id='+id;