新建一张表

关键的字段就在于 pid。如果用户是评论的话,默认pid为0,如果是回复 ,用js控制表单隐藏域 pid等于上级
然后ajax异步提交存入库中,再用递归进行排序,最后进行页面输出.
html:
<!-- 文章id -->
<input type="hidden" name="aid" id="aid" value="0">
<!-- 用户id -->
<input type="hidden" name="uid" id="uid" value="{$Think.session.uid}">
<!-- 内容 -->
<div class="comment-textarea-box">
<textarea rows="8" cols="50" name="content" id="respond-textarea" class="textarea comment-textarea" required ></textarea>
</div>
<a href="javascript:false;" id="{$comment.id}" onclick="reply(this)">回复</a>js:
//点击回复时候
function reply(o){
var comment_id=o.id;
$("#reply").attr('comment-id',''+comment_id+'');
$("#reply").append(newdiv);
var username=$('#username-'+comment_id+'').text();
$("#respond-textarea").text('@'+username+'');
}
//评论功能实现
layui.use('layer',
function() {
var layer = layui.layer;
$("#submit").click(function() {
var content = $("#respond-textarea").val();
var aid = $("#aid").val();
var uid = $("#uid").val();
var pid = $("#reply").attr('comment-id');
if (content !== '') {
$.ajax({
type: 'POST',
dataType: 'json',
data: {
aid: aid,
uid: uid,
content: content,
pid: pid
},
url: "{:url('Article/comment')}",
success: function(data) {
if (data) {
layer.msg(data.msg, {
icon: data.code,
time: 1000
},
function() {
window.location.reload();
});
}
}
});
}
});
});控制器评论存入数据库
public function comment()
{
if(request()->isAjax()){
$data=input('post.');
$data['comment_time']=time();
if(!isset($data['pid'])){
$add=db('article_comment')->insert($data);
if($add){
return ['msg'=>'留言成功','code'=>1];
}else{
return ['msg'=>'留言失败','code'=>2];
}
}else{
$add=db('article_comment')->insert($data);
if($add){
return ['msg'=>'留言成功','code'=>1];
}else{
return ['msg'=>'留言失败','code'=>2];
}
}
}
}递归显示排序显示
//获取当前文章评论和回复
public function getArticleComment($id)
{
$articleComment=db('article_comment')
->alias('a')
->field('a.*,b.nickname,b.username,b.head')
->join('user b','a.uid=b.id')
->order('id desc')
->where(['a.aid'=>$id,'a.pid'=>0])
->select();
foreach($articleComment as $k=>$v){
$childrenIds=$this->childrenIds('article_comment',$v['id'],true);
foreach ($childrenIds as $k1 => $v1) {
$articleComment[$k]['children'][]=db('article_comment')->alias('a')->field('a.*,b.nickname,b.username,b.head')->join('user b','a.uid=b.id')->find($v1);
}
}
return $articleComment;
}
//先获取所有的栏目的id和pid
public function childrenIds($dbname,$cateid,$empty=false){
$data=db($dbname)->field('id,pid')->select();
return $this->_childrenIds($data,$cateid,$empty);
}
//递归获取子栏目id
private function _childrenIds($data,$cateid,$empty=false){
//判断是否清空
if($empty){
$arr=array();
}else{
static $arr=array();
}
foreach($data as $k => $v){
if($v['pid'] == $cateid){
$arr[]=$v['id'];
$this->_childrenIds($data,$v['id']);
}
}
return $arr;
}(๑>ڡ<)☆谢谢老板~
使用微信扫描二维码完成支付
小安
已有 0条评论