通知系统获取所有新记录

时间:2015-11-05 05:06:53

标签: php json ajax while-loop

所以我已经构建了所有基本功能,但存在一个重大缺陷。我从插入的最后一个id搜索,这很好..但错误是当我到达PHP。我搜索MAX id并显然发回最后一条记录..但是如果用户做了三个向你发送通知的动作,那么只有当页面刷新时,其他两个动作才会通过调用显示。

那么当我从前端搜索的最后一个id进行调用时,我需要更改以从数据库获取所有通知吗?我假设在PHP页面中可能有一个while循环而不是max id。但是后端如何从前端选择所有新数据的最后一个最大ID?

所以这就是我所拥有的。

or  r32, r32

PHP

   <?  

$user1_id=mysqli_real_escape_string($mysqli,$_SESSION['id']);
$call="select MAX(notification_id) AS notification_id ,notification_status,notification_targetuser,notification_triggeredby,notification_throughurl from notifications WHERE notification_targetuser='$user1_id' AND notification_status=1 ORDER BY notification_id DESC LIMIT 1";
        $chant=mysqli_query($mysqli,$call) or die(mysqli_error($mysqli));


while($notification=mysqli_fetch_array($chant)){
?>
<script type="text/javascript">

var notification_id="<?php echo $notification['notification_id']?>";
var notification_targetuser="<?php echo $notification['notification_targetuser']?>";
var notification_triggeredby="<?php echo $notification['notification_triggeredby']?>";
function loadIt() {

$.ajax({
type: "GET",
url: "viewajax.php?notification_id="+notification_id+"&notification_targetuser="+notification_targetuser+"&notification_triggeredby="+notification_triggeredby,   
dataType:"json",
success: function(data){
if(data.notification_id>notification_id){
 $("#notif_ui"+notification_id).prepend('<div class="notif_text"><div id="notif_actual_text-" class="notif_actual_text"><img border="1" src="userimages/cropped'+data['notification_triggeredby']+'.jpg" onerror=this.src="userimages/no_profile_img.jpeg" width="40" height="40" ><br /><a href="'+data['notification_throughurl']+'">'+data['notification_content']+' </a><br />'+data['notification_time']+'<br/></div></div></div><hr/>');
 i = parseInt($("#mes").text()); $("#mes").text((i+data.num)); 

    if(!data.notification_id.length) {
   //no results...
   return;
}
notification_id = data.notification_id; 
}
}
});
}
setInterval(loadIt, 10000);   
 </script>

1 个答案:

答案 0 :(得分:0)

我实际上在while循环中使用了mysqli_free_result($com);,阻止了多个结果集返回,因此从查询中删除了它。