所以看完改文章你还不明白的话请 查看视频教程吧。
童老师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;
} 最佳答案