如何更新页面后,数据库插入或更新在PHP或ajax


how to update page after database insert or update in php or ajax

一个很好的例子就是facebook。在有人评论另一个人之后,所有人都可以看到更新弹出,而不仅仅是你自己的页面,不需要刷新。我正在做一个项目,监控或过滤掉不好的评论。所以,如果有一个不好的评论插入到数据库中,它会给我通知,并弹出数据。请帮忙…我使用php作为服务器端语言

总有办法的。您可以使用comet编程和使用ajax和php的长轮询。

缺点是使用comet,你的其他http请求将是Holt,所以对于comet,你必须重写会话,这是最好的。

根据你的问题,我建议你使用myisam引擎,因为它跟踪数据库最后修改的时间戳,所以你会知道数据库何时更新。

示例彗星代码如下:

index . php

<div id="content"></div>
<p id="form_container">
    <form action="" method="get" onsubmit="comet.doRequest($('#word').val());$('#word').val('');return false;">
        <input type="text" name="word" id="word" value="" />
        <input type="submit" name="submit" value="Send" />
    </form>
</p>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
    var Comet = function (data_url)
    {
        this.timestamp = 0;
        this.url = data_url;  
        this.noerror = true;
        this.connect = function()
        {
            var self = this;
            $.ajax(
            {
                type : 'post',
                url : this.url,
                dataType : 'json', 
                data :
                {
                    'timestamp' : self.timestamp
                },
                success : function(response)
                {
                    self.timestamp = response.timestamp;
                    self.handleResponse(response);
                    self.noerror = true;          
                },
                complete : function(response)
                {
                    if (!self.noerror)
                    {
                        setTimeout(function(){ comet.connect(); }, 5000);           
                    }
                    else
                    {
                        self.connect(); 
                    }
                    self.noerror = false; 
                }
            });
        }
        this.disconnect = function() {}
        this.handleResponse = function(response)
        {
            $('#content').append('<div>' + response.msg + '</div>');
        }
        this.doRequest = function(request) {
            $.ajax(
            {
                type : 'post',
                url : this.url,
                data :
                {
                    'msg' : request
                }
            });
        }
    }
    var comet = new Comet('./backend.php');
    comet.connect();
</script>

backend.php

function get_date()
{
    $query = mysql_query("show table status from weefavr like 'request_responses'")or die(mysql_error());
    $row = array();
    while($result = mysql_fetch_assoc($query))
    {
        $row[] = $result;
    }
    return strtotime($row[0]['Update_time']);
}
$lastmodif    = isset($_POST['timestamp']) ? $_POST['timestamp'] : 0;
$currentmodif = get_date();
while ($currentmodif <= $lastmodif)
{
    usleep(10000);
    clearstatcache();
    $currentmodif = get_date();
}
$query_db = mysql_query("SELECT UNIX_TIMESTAMP(last_update.created) AS DATE,last_update.* FROM last_update WHERE UNIX_TIMESTAMP(last_update.created) BETWEEN '".$lastmodif."' AND '".$currentmodif."'")or die(mysql_error());
$row_db = array();
$response = array();
while($result_db = mysql_fetch_assoc($query_db))
{
    $response['msg'][]       = $result_db['title'];
}
$response['timestamp'] = $currentmodif;
$response['lastmodif'] = $lastmodif;
echo json_encode($response);
flush();

这个例子很有帮助,但正如我告诉你的,你的其他HTTP请求将不起作用。所以你需要做一些关于session和else的hack。

是的,Facebook, gmail,asana和zaarly都是使用comet编程的大巨头。

希望这将帮助。

您需要从您的页面发出一个AJAX请求来实现这一点。

当用户执行一个操作时,您可以提交一个ajax请求并动态更新该用户的页面。其他人也会看到这个

这里有一个很好的PHP/MySQL/AJAX教程和下载,应该可以让你开始。将其与服务器端过滤逻辑和定期ajax回调相结合,以保持每个人的页面更新,您应该能够实现您正在寻找的。

将是PHP和Ajax。如果你需要,这里有一个基本的介绍。基本上你需要有一个网页,通过Javascript异步轮询你的后端(PHP页面),提供新的内容。您可以使用Javascript计时器或更复杂的设置,如后端"推送"到页面。我建议你看看另一页的例子