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中执行系统外部命令
Oct 09 PHP
php microtime获取浮点的时间戳
Feb 21 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
php如何实现只替换一次或N次
Oct 29 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
WAF的正确bypass
Jan 05 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP实现用户登录的案例代码
May 10 PHP
PHP实现登录验证码校验功能
May 17 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
2012/12/17 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
JS运动框架之分享侧边栏动画实例
2015/03/03 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python3中的列表,元组,字典,字符串相关知识小结
2017/11/10 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python玩转Excel的读写改实例
2019/02/22 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
flask应用部署到服务器的方法
2019/07/12 Python
Pytorch之保存读取模型实例
2019/12/30 Python
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
法院干警四风问题个人对照检查材料思想汇报
2014/10/07 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
幼儿园校车安全责任书
2015/05/08 职场文书
收入证明怎么写
2015/06/12 职场文书
我的中国梦主题班会
2015/08/14 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书