当前位置:Gxlcms > PHP教程 > 重新提问一下这个帖子回复的问题

重新提问一下这个帖子回复的问题

时间:2021-07-01 10:21:17 帮助过:19人阅读

模仿的百度贴吧的一个效果 就是在帖子列表页点击某个帖子标题进入到这个帖子主页 我是根据点击的哪个标题就POST哪个title值去数据库查询数据 点击进去后把帖子的作者和标题内容显示出来 我下面也加了一个回复的功能 把提交的回帖数据插入到一个从表里面 我的问题出在因为提交回复是在本页面完成的 当提交回复动作完成后帖子的标题和作者内容这些东西并没有接收到POST过来的值 也没法去数据库查询 所以会报错 那么怎么样可以一直查询到帖子的标题和作者这些东西呢?如果做一个if判断 如果接收到了POST值就正常查询数据库的内容 如果没有接收到值该怎么处理呢?


回复讨论(解决方案)

帖子列表页点击某个帖子标题进入到这个帖子主页
而这个 帖子主页 显示有帖子和回复的内容,并有一个供回复的表单,提交到本页
由于进入 帖子主页 时,有从 帖子列表页 传入的 帖子id,所以供回复的表单也需要带上 帖子id
其实道理很简单,如果不带上 帖子id 的话,你就没办法知道回复是给谁的了

帖子主页 的工作流程是:
检查是否是表单提交
如果是,则将回复入库
按传入的 帖子id 从表中读取内容和回复,并显示出来

帖子列表页点击某个帖子标题进入到这个帖子主页
而这个 帖子主页 显示有帖子和回复的内容,并有一个供回复的表单,提交到本页
由于进入 帖子主页 时,有从 帖子列表页 传入的 帖子id,所以供回复的表单也需要带上 帖子id
其实道理很简单,如果不带上 帖子id 的话,你就没办法知道回复是给谁的了

帖子主页 的工作流程是:
检查是否是表单提交
如果是,则将回复入库
按传入的 帖子id 从表中读取内容和回复,并显示出来



你说的我都明白但是在帖子本页提交回复的话 那个跳转的post值怎么处理啊 如果提交回复的话 本页就没有就收到post值了啊 那么怎么查询显示啊 比如当前页地址是http://localhost/tieba3.php?id=4 我一提交回复的话怎么让地址栏还是id=4呢

既然回复是提交到本页,那么表单的 action 就不需要写
这样进入程序时的 url 参数就是不会变得

附上完整代码

帖子列表页








include "cookie.php";
echo $_COOKIE['username'];
?>




include 'function.php';
header('content-type:text/html;charset=utf-8;');
$pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
$stmt=$pdo->prepare("select * from tieba");
$stmt->execute();
$res=$stmt->fetchall();
$rows=count($res);//总的条数
$pagesize=8;
if($rows==0){
$pagenum=0;
}else{
$pagenum=ceil($rows/$pagesize);//分成几页
}
if(isset($_GET['page'])){
$page=$_GET['page'];
if(empty($page)||$page<0||!is_numeric($page)) {
$page=1;
}else{
$page=intval($page);
}
}else{
$page=1;
}
if($page>$pagenum){
$page=$pagenum;
}
$startnum = ($page - 1)*$pagesize;
$display_page=5;
$query = "SELECT * FROM tieba LIMIT $startnum,$pagesize";
$stmt2=$pdo->prepare($query);
$stmt2->execute();
$res2=$stmt2->fetchall(PDO::FETCH_ASSOC);
foreach($res2 as $v){
echo '

  • '.$v['title'].'
  • ';
    }
    ?>


    fenye();
    ?>










    帖子主页








    include "cookie.php";

    ?>




    if(isset($_GET['title'])){
    echo $_GET['title'];
    $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
    $title=$_GET['title'];
    $stmt=$pdo->prepare("select id,title,type,name,num,site,content from tieba where title=?");
    $stmt->execute(array($title));
    $res3=$stmt->fetchall(PDO::FETCH_ASSOC);
    foreach($res3 as $v){
    echo ''.$v['num'].'';
    $id1=$v['id'];
    }
    }else{
    echo $id1;
    }

    ?>






    $id2=$v['id'];
    $pdo=new PDO("mysql:host=localhost;dbname=t1","root","");
    $stmt=$pdo->prepare("select id,name,content from reply where reid=?");
    $stmt->execute(array($id2));
    $res1=$stmt->fetchall(PDO::FETCH_ASSOC);
    foreach($res1 as $v2){
    echo $v2['name'];
    }
    ?>








    既然回复是提交到本页,那么表单的 action 就不需要写
    这样进入程序时的 url 参数就是不会变得




    原来这样的啊 谢谢喽版主

    人气教程排行