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、新しいメッセージの量だけがロードされます。