我有一个正在创建的小博客。它从数据库中获取信息。我想向已登录的用户显示其他人刚刚输入了新评论。我创建了 3 个页面:old_count、new_count、posts。我打算为 new_count 和 old_count 创建一个会话,并在帖子中减去它们。结果将在 div 中显示给用户。我已经放弃了这个想法,因为 old_count 和 new_count 将具有相同的信息,因此帖子中的结果将始终为 0。我正在寻找类似 Twitter 的东西,如果有新条目,则会出现一个 div 显示 - 1 新帖子--。我一直在寻找一种方法来做到这一点。有人可以帮帮我吗。(注意 - 请解释完整的脚本......提前谢谢!!!!)
问问题
191 次
4 回答
0
设置他们上次检查内容的时间戳。
然后,使用 javascript,轮询服务器(SELECT * FROM posts WHERE created_timestamp > {$last_checked_timestamp}
如果结果 > 0 则显示计数。
更新时间戳。
于 2012-12-19T20:35:08.733 回答
0
问题是:评论什么时候是新评论?如果它是在最近一次点击和当前点击之间创建的?或者如果用户还没有看到它?
最简单的方法是在会话中存储“已知”评论(例如 ID)并检查当前可用的评论。
于 2012-12-19T20:35:15.237 回答
0
您必须存储登录时间戳用户。也许在数据库或会话中。对照评论时间戳检查它。您必须为已插入数据库中的所有评论显示通知并遵守以下条件
- Comment_Timestamp < User_Login_Timestamp。
- (Current_Timestamp - Comment_Timestamp) <= Refresh_interval
PHP:
<?php
/*
DB CONNECT AND SQL TO SELECT COMMENTS FROM THE TABLE. YOU CAN OPTIMIZE QUERY TO REDUCE THE NUMBER OF
TUPLES
*/
$current_ts = strtotime(date('m/d/Y h:i:s a');
$notified = array();
foreach($all_comments as $comment) {
if(strtotime($comment['ts']) < strtotime($_SESSION['user_login_ts'])) {
if(($current_ts - strtotime($comment['ts']) <= REFRESH_INTERVAL) {
$notified[] = $comment;
}
}
}
echo json_encode($notified);
?>
JS AJAX
setInterval(function(){
$.ajax({
url: "server",
success: function(data) {
/* Data is the JSON Object for new comments for that user */
},
dataType: "json"
});
}, <?=REFRESH_INTERVAL?>);
于 2012-12-19T21:19:51.747 回答
0
根据 David 发布的建议,我针对之前提出的问题提出了以下解决方案。
- 我在登录时创建了一个时间戳。
- 然后我使用它在数据库上运行搜索。
包含此信息的 DIV 每 10 秒刷新一次,并且是指向时间戳重置页面的可点击链接。该页面的代码如下:
<?php
session_start();
$reset = $_POST['reset'];
if($reset == 'reset')
{
$_SESSION['time_stamp'] = time();
echo "done";//confirmation purpose
}
?>
和我控制整个节目的javascript:
<script type="text/javascript">
<!--
$(document).ready(function(){
$('#divname').click(function(){
var r="reset";
$.ajax({
type: "POST",
url: "reset_time.php",
data: r,
success: function(html){
if(html == 'done')
{
$('#divwithinfo').reload(/*my blog page url*/);
}
});
});
});
-->
</script>
于 2012-12-21T17:05:21.647 回答