PHP实现无限级评论模块的功能
发布于 2021-05-12 23:25 ,所属分类:区块连和PHP开发学习资料
无限级设计是一种很常见的数据库设计方式,应用在分类,评论等模块,以下是PHP实现无限级评论的例子。
数据库设计
CREATETABLE`comments`(
`id`int(10)unsignedNOTNULLAUTO_INCREMENT,
`user_id`int(10)unsignedNOTNULLDEFAULT'0',
`parent_id`int(10)unsignedNOTNULLDEFAULT'0',
`article_id`int(10)unsignedNOTNULLDEFAULT'0'COMMENT'文章id',
`content`textCOMMENT'留言内容',
`create_time`datetimeNOTNULLDEFAULT'0000-00-0000:00:00'COMMENT'添加时间',
`from_user`varchar(255)DEFAULTNULLCOMMENT'谁评论',
`to_user`varchar(255)DEFAULTNULLCOMMENT'评论谁',
PRIMARYKEY(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8COMMENT='评论表';
函数封装
#$data是评论表所有数据的数据集
#$parent是指parent_id$son是指id
functiongetSubTree($data,$parent,$son,$pid=0){
$tmp=array();
foreach($dataas$key=>$value){
if($value[$parent]==$pid){
$value['children']=getSubTree($data,$parent,$son,$value[$son]);
$tmp[]=$value;
}
}
return$tmp;
}
函数调用
$sql="SELECT*FROMcommentsWHEREarticle_id={$id}ORDERBYidDESC";
$res=queryAll($sql);
$res=getSubTree($res,'parent_id','id');
展示评论
<?phpforeach($resas$key=>$value){?>
<divclass="father">
<h2><?phpecho$value['from_user'];?></h2>
<p><?phpecho$value['content']?></p>
<divclass="son">
<?phpforeach($value['children']as$k=>$v){?>
<divclass="reply-list">
<h2><?phpecho$v['from_user'];?></h2>
<p><?phpecho$v['content']?></p>
</div>
<?php}?>
</div>
</div>
<?php}?>
本文首发于gongzhong号《计算机程序》,一个专注于项目和技术分享的gongzhong号!项目源码领取:gongzhong号后台回复 1024
相关资源