如果在数据库中添加了新记录,则从数据库中检索数据


Retrieve Data from database if new records added in database

你好,我已经经历了长轮询,websockets和APE, Ajax推送,Ajax拉。由于websockets技术目前在我们的万维网中还没有被引入。我想我会使用正常的setInterval函数来检查数据库。这是一个聊天应用程序,我的代码:-

on 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
{
}

如果在数据库中插入了一条新记录,它会正确地回显出来,但它不会更新home.php页面中的$id,所以它会一次又一次地发送旧id,并一次又一次地添加注释。

我想要的是。对于每一个区间。home.php的$id应该更新,以便它只发送当前的消息id到check.php页面。

我认为你发布的第一个代码是在你的模板home.php$id然后被替换为最后一个id的实数。

这在第一次用PHP处理页面时有效,但是一旦下载到用户机器上,你只需要依赖JavaScript…我不确定从check.php接收数据的形式,但你需要做一些类似

的事情
id = data.id
data = 'id='+id;