好的...所以我正在尝试使用php构建一个消息系统,当有消息进来时,我需要一个小数字>>>消息(0)<<<更改为新的金额而不重新加载整个页面。如果我可以用jquery或其他东西重新加载整个页面会很好,然后只是改变的东西会改变......这就是我真正想要的东西。
该数字来自数据库中与登录用户相关的未读消息数量。在图像中,您可以看到新消息进入时数字显示的位置,但直到页面加载为止...我需要它来检查至少2个不同位置的更改并大约每30秒运行一次查询。
答案 0 :(得分:1)
你需要 AJAX ,这是一个例子:
首先,当您加载页面时,您需要获取已发送邮件的最后一个ID。
$lastID = SELECT MAX(id) AS `id` FROM `messages` WHERE `to` = . getLoggedUserId()
然后,您需要将其传递给Ajax:
$(document).ready(function(){
setInterval(function(){
$.get("page.php?checkMessages&lastID=<?php echo $lastID; ?>", function(amount){
if(amount > 0){
$("span.newMessages").text(amount);
}
})
},10*1000); // every 10 seconds
})
在 page.php 上,您将拥有:
<?php
if( isset($_GET["checkMessages"]) ){
$lastID = (int)$_GET["lastID"]; // just for security
$newMessages = 'SELECT COUNT(*) AS `amount` FROM `messages` WHERE `id` > ' . $lastID . ' AND `to` = ' . getLoggedUserId()
echo $newMessages;
exit;
}
?>
然后,每10秒钟,只会加载包含新邮件数量的span
。