2011-12-16 6 views
-1

こんにちは、ロングポーリング、Webソケット、APE、Ajaxプッシュ、AjaxプルWebSocketの技術はまだWorld Wide Webで紹介されていません。私は通常の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 
{ 
} 

データベースに新しいレコードが挿入されている場合i echoは正しく出力されていますが、home.phpページの$ idを更新しないので、古いIDを何度も送信して、コメントを何度も追加します。

私は何が欲しいですか?毎間隔ごとにhome.phpの$ idは、現在のメッセージIDだけをcheck.phpページに送るように更新する必要があります。

+0

あなたの入力をサニタイズしてください!私はcheck.phpを送信するだけであなたのデータベースを拭くことができますか?id = ';ドロップテーブルメッセージ; - –

+0

yea yea lol。私は最初にすべてのことがうまくいくならテストのこととしてそれをやっていたが、セキュリティの部分に入るだろう;-)。とにかくリマインダーのためにありがとう:) – Samir

答えて

0

私はあなたのポストをした最初のコードはhome.phpのテンプレートであるとます$ idが、最後のIDの実数で置き換える行くことgues。

これは、ページがPHPで処理された後で初めて動作しますが、ユーザーのマシンに一度ダウンロードすると、JavaScriptに依存する必要があります。 チェックからデータを受け取るフォームがわかりません.phpのようにする必要があります。

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

そのdivは "コメント"それは追加されたtherを取得するクラスで指定された。だから私はこれをしなくてはなりませんか?私のコードの一部を意味しますか? – Samir

+0

setInterval関数内のIDを更新する必要があります –

関連する問題