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 03 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
PHP判断表单复选框选中状态完整例子
Jun 24 PHP
PHP中require和include路径问题详解
Dec 25 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
Zend Framework校验器Zend_Validate用法详解
Dec 09 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 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
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
VUE实现移动端列表筛选功能
2019/08/23 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
全面理解Python中self的用法
2016/06/04 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python游戏开发的五个案例分享
2020/03/09 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
大学毕业感言
2014/01/10 职场文书
高中生操行评语大全
2014/04/25 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
小马王观后感
2015/06/11 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Python道路车道线检测的实现
2021/06/27 Python
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js
Moment的feature导致线上bug解决分析
2022/09/23 Javascript