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.接下来是在页面上显示评论和回复信息:

在控制器里面,我们需要去查询该文章下的所有评论及回复内容,并且注册到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" /> &nbsp;
                        <span>{$vp.name}</span>&nbsp;
                        <span>{$vp.time|date="Y-m-d H:i:s",###}</span>&nbsp;
                        <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" /> &nbsp;
                        <span>{$vp.name}</span>&nbsp;
                        <span>{$vp.time|date="Y-m-d H:i:s",###}</span>&nbsp;
                        <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即可。

具体实现比较简单,不赘述。

时间: 2024-08-28 00:45:05

TP5.0实现无限极回复功能的相关文章

TP5 Tree类无限极分类

项目中会经常遇到需要递归的地方,分享一个正在用的一个递归查询.虽然递归有时候会慢,但是还没有找到个好的解决办法,如果有好的办法,请分享一下. <?phpnamespace tree;use app\goods\model\Category; /** * 树结构生成类 */class Tree{ /** * 根据父级id查询所有父级id一下的所有分类 * @start */ static public $treeList = array(); // 存放无限级分类结果 static public

最新版勤哲Excel服务器V2016.12.0.292无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级

最新版勤哲Excel服务器V2016.12.0.292无限用户支持手机APP,微信,网页等功能不绑定电脑,任意安装,支持后续升级. 这个版本发布过之后,再发布新的版本需要到下个月的中下旬,老朋友可以使用本版本后面延续升级 目前有大约127家用户在用,没有修改过注册授权文件,系统非常成熟,推荐指数为五星,QQ:619920289 麦枫论坛http://www.mfsun.com 简介 EXCEL服务器作为一款客户化.综合性管理软件,它通过Excel就能构造出您自主的管理系统:同时,她也可将您公司现

thinkphp5.0无限极分类及格式化输出

首先我们来看数据表 从上图中可以发现,中国下有贵州,北京两个子节点,而北京有天安门一个子节点,纽约的子节点是"纽约的子类". 从pid为0看出,中国和纽约是顶级节点. 因为贵州的pid是1,而中国的id为1,所以贵州的父节点是中国,至于type字段,可以不用管,只是我自己的项目需要. 可以发现,着写数据在数据表中是无序的,并没有我们想象中的层次结构分明并且可读性很好. 那么,当使用无限极分类之后数据的输出是怎样的呢?如下: 这样就能够很清晰的看出他们的层次结构了,那么这样的效果在thi

TP5.0中的小知识总结

2017年6月26日15:01:231.input    获取输入数据 支持默认值和过滤:接收用户在前台输入的数据,可以是get方式也可以是post方式.2.ThinkPHP5.0内置了分页实现,要给数据添加分页输出功能在5.0变得非常简单,可以直接在Db类查询的时候调用paginate方法:    分页功能:杂项>分页3.递归方法实现无限极分类    //递归方法实现无限极分类    protected function getTree($data, $parent_id = 0, $leve

thinkphp 无限极 评论

郑创 今天用啦一天的时间用了各种方法终于把评论成无限极了,随便评论,有判断自己不能评论自己,下面先说前台源代码! 要实现的视图 前台源代码html模板 <div class="wen_1">郑创 <div class="wen_1_1"> <a href="#pinl" ><i style="background-image: url('images/pl.png')"><

php无限级分类实战——评论及回复功能

经常在各大论坛或新闻板块详情页面下边看到评论功能,当然不单单是直接发表评论内容那么简单, 可以对别人的评论进行回复,别人又可以对你的回复再次评论或回复,如此反复,理论上可以说是 没有休止,从技术角度分析很容易想到运用无限级分类技术存储数据,运用递归获取评论层级结构 数据,运用ajax实现评论页面交互,这里用thinkphp框架做个简单的demo练练手,为了简化流程 这里第三级评论不再提供回复功能,当然只要在这个基础上稍作修改就可以实现无限回复功能,主 要是view层样式修改较麻烦,需花些时间.

微信公众号教程(10)公众账号自定义回复功能

公众账号自定义回复功能 微信官方其实并不推荐经常群发消息,更多的是希望用户通过对话来自己获取服务或者进行搜索.今天我们就讲下如何使用开发模式做自定义回复. 目前公众账号可以接收的用户提交消息请求有四种类型,分别是文字.图片.地理位置和链接,而公众账号回复只有三种格式,文字.图文和音乐,也就是说用户互动的模式最多也就是12种,我们今天先讲三种即文字回复文字.文字回复图文.文字回复音乐. 这强调一下,微信的消息接口通讯有效时间是5秒,也就是说网络不稳定等原因很容易造成用户在5秒内接收不到回复消息,然

C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现

今天做一个管理后台菜单,想着要用无限极分类,记得园子里还是什么地方见过这种写法,可今天找了半天也没找到,没办法静下心来自己写了: 首先创建节点类(我给它取名:AdminUserTree): 1 /// <summary> 2 /// 无限极节点类 3 /// </summary> 4 public class AdminUserTree 5 { 6 /// <summary> 7 /// 节点信息 8 /// </summary> 9 public int

夺命雷公狗ThinkPHP项目之----企业网站8之栏目的添加完善(无限极分类的完成)

我们刚才只是完成了添加的一部分,但是我们的上级分类也不能永远都是只有一个死的嘛,所以我们需要对她进行修改: 我们先将add方法里面的数据查出来再说: 然后在模板页进行遍历: 展示效果如下所示: 虽然是出现了,但是没有向我们平常时候见到的无限极分类一样噢,一般比如分类 多多,分类下面的 好多美女啊 是多多的下级分类,那么好多美女啊他前面是有几个空格之类的隔开, 那么我们就需要在model层里面对她进行排序的设置了: <?php namespace Admin\Model; use Think\Mo