如何向用户显示已输入新评论

时间:2012-12-19 20:21:35

标签: php javascript jquery mysql ajax

我正在创建一个小博客。它从数据库中获取信息。我想向用户显示其他人刚刚输入新评论的用户。我创建了3个页面:old_count,new_count,posts。我打算为new_count和old_count创建一个会话,并在帖子中减去它们。结果将以div显示给用户。这个想法我已经废弃了,因为old_count和new_count都有相同的信息,所以帖子中的结果一直是0.我正在寻找的东西就像Twitter,如果有一个新的条目,div出现显示 - 1个新职位 - 。我一直在寻找一种方法来做到这一点。有人可以帮帮我吗。 (注意 - 请完整解释脚本....在此先感谢!!!!)

4 个答案:

答案 0 :(得分:0)

设置上次检查内容的时间戳。

然后,使用javascript,轮询服务器(SELECT * FROM发布WHERE created_timestamp> {$ last_checked_timestamp}

如果结果> 0然后显示计数。

更新时间戳。

答案 1 :(得分:0)

问题是:评论什么时候发表评论?如果在最近的点击和当前点击之间创建了?或者,如果用户还没有看到它?

最简单的方法是在会话中存储“已知”评论(例如ID),并检查当前可用的评论。

答案 2 :(得分:0)

您必须存储登录时间戳用户。也许在DB或会话中。根据评论时间戳检查它。 您必须显示已插入数据库的所有注释的通知,并遵守以下条件

  1. Comment_Timestamp< User_Login_Timestamp。
  2. (Current_Timestamp - Comment_Timestamp)< = Refresh_interval
  3. 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?>);
    

答案 3 :(得分:0)

根据大卫发布的建议,我提出了以下我刚才提出的问题的解决方案。

  1. 我在登录时创建了一个时间戳。
  2. 然后我用它在数据库上运行搜索。
  3. 包含此信息的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>