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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
php上传文件的增强函数
Jul 21 PHP
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
修改destoon会员公司的伪静态中的com目录的方法
Aug 21 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
Dec 02 PHP
PHP面向对象程序设计方法实例详解
Dec 24 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 PHP
PHP实现与java 通信的插件使用教程
Aug 11 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
晶体管来复再生式二管收音机
2021/03/02 无线电
一个用于网络的工具函数库
2006/10/09 PHP
php中使用preg_match_all匹配文章中的图片
2013/02/06 PHP
js常见表单应用技巧
2008/01/09 Javascript
javascript 写类方式之五
2009/07/05 Javascript
js 与或运算符 || &amp;&amp; 妙用
2009/12/09 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
canvas实现二维码和图片合成的示例代码
2018/08/01 HTML / CSS
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
应聘编辑自荐信范文
2014/03/12 职场文书
委托公证书样本
2015/01/23 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python