TP5.0框架实现无限极回复功能的方法分析


Posted in PHP onMay 04, 2019

本文实例讲述了TP5.0框架实现无限极回复功能的方法。分享给大家供大家参考,具体如下:

最近做项目的时候用到了评论回复,使用ThinkPHP5.0框架做回复碰到了一些问题,简单总结一下。(李昌辉)

1.首先是数据表的设计:

create table zy_huifu
(
  code int auto_increment primary key, #回复代号
  puser varchar(50), #回复人员
  listcode int, #文章代号
  time varchar(50), #回复时间
  content text, #回复内容
  pcode int, #父级代号 0文章
  leval int, #级别 0顶级 1其它
  isok int #已读未读0未读1已读
);

评论和回复放在了一张表里面,为了在显示的时候做区分,评论作为顶级回复级别代号为0,其它的子级回复级别代号为1。

每个回复都有一个父级代号代表回复的哪一条评论,如果是直接评论的文章,父级代号设置为0.

2.接下来是在页面上显示评论和回复信息:

TP5.0框架实现无限极回复功能的方法分析

在控制器里面,我们需要去查询该文章下的所有评论及回复内容,并且注册到TP框架里面,这里调用了一个方法CommentList()来获取该文章下的评论回复:

//查询评论
$ahuifu = $this->CommentList($code,0);
$this->assign("ahuifu",$ahuifu);

CommentList()方法如下,使用递归的方式将所有评论回复按照一定的顺序查询出来并且存储到数组里面:

//读取评论列表的递归,code为文章代号,pcode为父级代号
  public function CommentList($code,$pcode){
    $commentlist = array(); //存储评论数组
    $list = Db::table("zy_huifu")
    ->alias('a')
    ->where("listcode",$code)
    ->where("pcode",$pcode)
    ->join("zy_user b","a.puser = b.uid")
    ->select();
    foreach($list as $v){
      $commentlist[] = $v;
      //查询子回复
      $zi = $this->CommentList($code,$v["code"]);
      if(count($zi)){
        foreach($zi as $v1){
          $commentlist[] = $v1;
        }
      }
    }
    return $commentlist;
  }

在view视图页面显示数据:

{volist name="ahuifu" id="vp"}
        {if condition="($vp.leval == 0)"}
        <div class="panel panel-default pl_list">
        <div class="panel-body pl_list_nr">
          <div class="show_nr_pl_tou">
            <img src="{$vp.img}" width="30" height="30" />  
            <span>{$vp.name}</span> 
            <span>{$vp.time|date="Y-m-d H:i:s",###}</span> 
            <span><button class="btn btn-primary btn-xs show_huifu_btn" pcode="{$vp.code}">回复</button></span>
          </div>
          <div class="show_nr_pl_nr">
            {$vp.content}
          </div>
        </div>
        </div>
        {else /}
        <div class="panel panel-default pl_list">
        <div class="panel-body pl_list_nr" style="margin-left:50px">
          <div class="show_nr_pl_tou">
            <img src="{$vp.img}" width="30" height="30" />  
            <span>{$vp.name}</span> 
            <span>{$vp.time|date="Y-m-d H:i:s",###}</span> 
            <span><button class="btn btn-primary btn-xs show_huifu_btn" pcode="{$vp.code}">回复</button></span>
          </div>
          <div class="show_nr_pl_nr">
            {$vp.content}
          </div>
        </div>
        </div>
        {/if}
{/volist}

3.添加回复及评论

添加评论的时候注意将父级代号pcode添加为0,将级别leval添加为0即可。

添加回复的时候将父级代号添加为要回复的这一条数据的主键,将级别leval添加为1即可。

具体实现比较简单,不赘述。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php缓存技术介绍
Nov 25 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
php制作的简单验证码识别代码
Jan 26 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
Oct 03 PHP
php实现的双色球算法示例
Jun 20 PHP
PHP实现的折半查询算法示例
Oct 09 PHP
关于php unset对json_encode的影响详解
Nov 14 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 #PHP
PHP超低内存遍历目录文件和读取超大文件的方法
May 01 #PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 #PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
Apr 30 #PHP
YII框架关联查询操作示例
Apr 29 #PHP
YII框架页面缓存操作示例
Apr 29 #PHP
YII框架http缓存操作示例
Apr 29 #PHP
You might like
PHP strtr() 函数使用说明
2008/11/21 PHP
php重定向的三种方法分享
2012/02/22 PHP
php常用的url处理函数总结
2014/11/19 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
js传值 判断
2006/10/26 Javascript
javascript 混合的构造函数和原型方式,动态原型方式
2009/12/07 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
jquery 实现两Select 标签项互调示例代码
2014/09/25 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
python使用mysql的两种使用方式
2018/03/07 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
django rest framework 过滤时间操作
2020/07/12 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
材料员岗位职责
2014/03/13 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
Python图像处理之图像拼接
2021/04/28 Python
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS