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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
php抓即时股票信息
Oct 09 PHP
模板引擎Smarty深入浅出介绍
Dec 06 PHP
PHP下escape解码函数的实现方法
Aug 08 PHP
php xml 入门学习资料
Jan 01 PHP
PHP 图片上传代码
Sep 13 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
php常用Stream函数集介绍
Jun 24 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
php实现将Session写入数据库
Jul 26 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 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中使用TCPDF生成PDF文档实例
2014/07/01 PHP
PHP中echo和print的区别
2014/08/28 PHP
php常用数学函数汇总
2014/11/21 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
js实现弹窗效果
2020/08/09 Javascript
浅谈python多线程和队列管理shell程序
2015/08/04 Python
详解python中的json的基本使用方法
2016/12/21 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
2017/09/22 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
银行求职推荐信范文
2013/11/30 职场文书
师范生自我鉴定
2014/03/20 职场文书
2014年纠风工作总结
2014/12/08 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
教你用eclipse连接mysql数据库
2021/04/22 MySQL
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
MySQL中order by的使用详情
2021/11/17 MySQL
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏