无限级评论制作方案视频教程分享

浏览:402 发布日期:2016/08/24 分类:技术分享
无限级评论制作起来稍微有些难度,主要是理解无限级评论的逻辑结构,从而设计出合理的表的结构,一篇简单的文章可能不能让新手朋友完全明白,
所以看完改文章你还不明白的话请 查看视频教程吧。
童老师ThinkPHP交流群:484519446

无限级评论演示:先看一下我们做好的效果图


其中重点是我们的数据表:


这里有必要讲解一下我们数据表的字段结构,搞懂这个基本就已经会了,数据表字段结构是我们的重点。

id
uid 发布该评论的用户的id
tid 如果是多级回复的话,对方的id
tuser 如果是多级回复的话,对方的用户名(这个也可以不要,根据个人情况来)

touid (如果是多级回复,比如三级、四级等,那么touid就代表他们对应的二级评论的id)
artid 该评论对应的文章
type 这个是我的项目需要的字段,因为有不同的文章类型所以需要标记
content 内容
pid 一级评论的id
pidsub 上级评论的id,从三级开始不为0

下面是核心代码【前端代码也很重要哦】://异步评论功能
    public function subcomment(){
        if(!IS_AJAX || !$_SESSION['username']){$this->error('非法操作!',U('Account/login'));}
        $comm=D('comment');
        $data['uid']=session('uid');
        $data['artid']=I('id');
        $data['type']=I('mtype');
        $data['content']=I('content');
        $data['time']=time();
        $data['pid']=I('pid');
        if(I('pid_sub')){
            $data['pidsub']=I('pid_sub');
            $comms=D('comment')->where(array('id'=>$data['pidsub']))->find();
            $data['tid']=$comms['uid'];
            $users=D('userinfo')->where(array('uid'=>$data['tid']))->find();
            $data['tuser']=$users['nickname'];
            $data['touid']=$this->touid($data['pidsub']);
        }
        $old=$comm->order('id desc')->find();
        $old=$old['time'];
        $tim=time()-$old;
        if($tim<10){
            $dat['code']='fast';
            $dat['error']='您提交评论的速度太快了,请稍后再发表评论。';
            echo json_encode($dat); 
            die;
        }
        $content=strlen($data['content']);
        if($content<10){
            $dat['code']='short than 10';
            $dat['error']='评论的内容不能少于10个字符。';
            echo json_encode($dat); 
            die;
        }
        if($comm->add($data)){
            $dat['code']=200;
            $dat['points']=0;
            $dat['comment']=$data['content'];
            echo json_encode($dat);
        }else{
            echo '';
        }

    }
有必要贴出的代码是,根据多级评论的pidsub获取对应二级评论id的代码,是通过一个方法实现的public function touid($pidsub){
        $commss=D('comment')->where(array('id'=>$pidsub))->find();
        if($commss['pidsub']==0){
            return $commss['id'];
        }

        while ($commss['pidsub']) {
           $commss=D('comment')->where(array('id'=>$commss['pidsub']))->find();
           $pidsub=$commss['id'];
        }

        return $pidsub;


    }
最佳答案
评论( 相关
后面还有条评论,点击查看>>