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学习教程之第2天
Jun 15 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
Mar 22 PHP
php求今天、昨天、明天时间戳的简单实现方法
Jul 28 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 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校验表单检测字段是否为空的方法
2015/03/20 PHP
微信API接口大全
2015/04/15 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
jQuery的层级查找方式分析
2016/06/16 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
python实现计算资源图标crc值的方法
2014/10/05 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python中按键来获取指定的值
2019/03/02 Python
python 堆和优先队列的使用详解
2019/03/05 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
会计电算化专业应届大学生求职信
2013/10/22 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
学校后勤人员职责
2013/12/27 职场文书
主持人演讲稿范文
2013/12/28 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
公司保洁员管理制度
2015/08/04 职场文书
接收函
2019/04/22 职场文书
MySQL优化及索引解析
2022/03/17 MySQL