Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示从数据库返回的阵列数据,而不刷新页面_Php_Jquery_Ajax - Fatal编程技术网

Php 显示从数据库返回的阵列数据,而不刷新页面

Php 显示从数据库返回的阵列数据,而不刷新页面,php,jquery,ajax,Php,Jquery,Ajax,我制作了一个Facebook风格的帖子和评论页面,用户可以在上面发表帖子和评论 我的第一个问题是,当我试图对帖子发表评论时,插入数据库的postID是最新的帖子,即使我对另一个postID发表评论 下一个问题是,我想实现的是,在评论一篇文章之后,即使我不刷新页面,评论也会在评论部分弹出。我已经试着寻找一个可能的解决方案,但没有一个适合我正在尝试的 以下是我的页面代码: post.php <?php foreach ($post_model->getcomment($postid)

我制作了一个Facebook风格的帖子和评论页面,用户可以在上面发表帖子和评论

我的第一个问题是,当我试图对帖子发表评论时,插入数据库的
postID
是最新的帖子,即使我对另一个
postID
发表评论

下一个问题是,我想实现的是,在评论一篇文章之后,即使我不刷新页面,评论也会在评论部分弹出。我已经试着寻找一个可能的解决方案,但没有一个适合我正在尝试的

以下是我的页面代码:

post.php

<?php 

foreach ($post_model->getcomment($postid) as $value) {
    if($postid == $value['post_uid']){
        ?>
        <div id="mycomments" class="col-lg-12" style="background:#eff9c7;">
            <img src="./<?php echo $session_image?>" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />
            <p style="margin-top:18px;line-height:15px;"><strong class="font-1" style="margin-left:10px;"><?php echo $session_fname.' '.$session_lname?></strong> <?php echo $value['pc_comment']?><br>
                <span class="" style="margin-left:10px;font-size:.9em;color:gray;"><abbr class="timeago" title="<?php echo $value['pc_datesend']?>"></abbr></span> 
            </p>
        </div>
        <?php
    }
}
?>

<div class="col-lg-12" style="background:#eff9c7;">
    <!--    <img src="../img/icons/no-icon-available.png" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />-->
    <input type="text" name="mycomment" id="mycomment" class="form-control pull-right" style="width:92%;margin-top:17px;" placeholder="Comments..." />
</div>
if(session_id() == '' || !isset($_SESSION))
    session_start();
$session_id = $_SESSION['id'];
require_once('../model/dbconfig.php');
require_once('../model/post.php');
$database = new Database();
$conn = $database->getConnection();
$com = new post($conn);
$comments = ($_POST['comments']);
$uid = ($_POST['id']);
$pc_uimage = ($_SESSION['image']);
$pc_ufname = ($_SESSION['firstname']);
$pc_ulname = ($_SESSION['lastname']);

if(isset($_POST['id']) && isset($_POST['comments']))
{
    $res = $com->comment($uid,$pc_uimage,$pc_ufname,$pc_ulname,$comments);
}

$res = $com->getcomment($uid);
echo json_encode($res);
controller.php

<?php 

foreach ($post_model->getcomment($postid) as $value) {
    if($postid == $value['post_uid']){
        ?>
        <div id="mycomments" class="col-lg-12" style="background:#eff9c7;">
            <img src="./<?php echo $session_image?>" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />
            <p style="margin-top:18px;line-height:15px;"><strong class="font-1" style="margin-left:10px;"><?php echo $session_fname.' '.$session_lname?></strong> <?php echo $value['pc_comment']?><br>
                <span class="" style="margin-left:10px;font-size:.9em;color:gray;"><abbr class="timeago" title="<?php echo $value['pc_datesend']?>"></abbr></span> 
            </p>
        </div>
        <?php
    }
}
?>

<div class="col-lg-12" style="background:#eff9c7;">
    <!--    <img src="../img/icons/no-icon-available.png" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />-->
    <input type="text" name="mycomment" id="mycomment" class="form-control pull-right" style="width:92%;margin-top:17px;" placeholder="Comments..." />
</div>
if(session_id() == '' || !isset($_SESSION))
    session_start();
$session_id = $_SESSION['id'];
require_once('../model/dbconfig.php');
require_once('../model/post.php');
$database = new Database();
$conn = $database->getConnection();
$com = new post($conn);
$comments = ($_POST['comments']);
$uid = ($_POST['id']);
$pc_uimage = ($_SESSION['image']);
$pc_ufname = ($_SESSION['firstname']);
$pc_ulname = ($_SESSION['lastname']);

if(isset($_POST['id']) && isset($_POST['comments']))
{
    $res = $com->comment($uid,$pc_uimage,$pc_ufname,$pc_ulname,$comments);
}

$res = $com->getcomment($uid);
echo json_encode($res);

您所描述的声音可以通过使用不同的技术/方法来解决。例如,如果您正在向服务器发送AJAX请求以创建帖子,那么您可以返回创建的帖子并更新页面(使用jQuery、vanilla JavaScript或手头的任何框架)。您可能还需要某种服务器端推送(web套接字、长轮询等)

如果您对将实时通知集成到您的页面感兴趣,我将首先介绍一些服务,如或。这些服务允许您订阅从服务器触发的事件,这样您就可以“监听”您感兴趣的帖子中的更改。例如,您可以创建一个频道服务器端来广播对帖子的更改。然后,在客户端上,您可以订阅 当有更新需要显示时,可以很容易地获得通知。这可以在10行以内实现,因此非常值得


顺便说一下。这两项服务都提供了一个免费层,非常适合中小型项目。我自己在生产应用程序中使用过它们,多达10000个用户不用付一分钱,因此它们可能非常适合您的情况

您请求的ajax结果是JSON。因此,您需要使用javascript数组结果重新创建注释的HTML。您可以使用jQuery创建HTML标记并附加到您的
#注释
div

只要在发布ajax成功后刷新div即可

jQuery("#your_div").load( refreshurl , function() {
    // do. stuff
});