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 相关文章推荐
3.从实例开始
Oct 09 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
php字符串函数学习之strstr()
Mar 27 PHP
Apache连接PHP后无法启动问题解决思路
Jun 18 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
php+ajax简单实现全选删除的方法
Dec 06 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 PHP
PDO::commit讲解
Jan 27 PHP
关于Yii中模型场景的一些简单介绍
Sep 22 PHP
php7 错误处理机制修改实例分析
May 25 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
substr()函数中文版
2006/10/09 PHP
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP检测用户语言的方法
2015/06/15 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
AngularJS 工作原理详解
2016/08/18 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
python抓取网页中的图片示例
2014/02/28 Python
python编写暴力破解FTP密码小工具
2014/11/19 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
泰国排名第一的家居用品中心:HomePro
2020/11/18 全球购物
创立科技Java面试题
2015/11/29 面试题
装饰公司活动策划方案
2014/08/23 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
管理失职检讨书
2015/05/05 职场文书
西游记读书笔记
2015/06/25 职场文书
小学班主任培训心得体会
2016/01/07 职场文书