php实现网站留言板功能 php  /  管理员 发布于 7年前   124
我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的畅言留言板样式:网易跟帖样式:原理需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、回复人什么的。其中pid就是当前已经回复过的评论的id。从上图可以看出,里面每一层的pid就是就是他上一层评论的id。仔细观察下上面的布局。是不是很像PHP中的多维数组?如果你能想到,那么就简单了。实现方法1.前台:这个比较简单 就是div嵌div。然后设置div的border和margin padding就行了 2、后台 :用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可comment表结构和内容如下然后直接读出这个表中的所有评论。可以得到如下数组Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 ) [3] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 ) [4] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 ) [5] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 ) [6] => Array ( [id] => 7 [pid] => 4 [content] => 评论7回复评论4 ) [7] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 ) [8] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 ) [9] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 ) ) 然后我们就需要把这个数组重组成上面的那种留言板形式的其中$array就是上面读取出来的数组,首先取出pid默认为空的,然后递归,在取出pid为当前评论id的数组public static function tree($array,$child="child", $pid = null) { $temp = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v[$child] = self::tree($array,$child,$v['id']); $temp[] = $v; } } return $temp; } 重组后,可以得到下面的这个数组,可以看到,这个数组的样式已经和前台评论样式很像了Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 [child] => Array ( [0] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 [child] => Array ( [0] => Array ([id] => 7[pid] => 4[content] => 评论7回复评论4[child] => Array ( [0] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 [child] => Array ( [0] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 [child] => Array ( ) ) [1] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 [child] => Array ( ) ) ) ) )) ) ) [1] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 [child] => Array ( ) ) ) ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 [child] => Array ( [0] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 [child] => Array ( ) ) ) ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 [child] => Array ( ) ) ) 得到上面的数组后 ,再用递归输出即可public static function traverseArray($array) { foreach ($array as $v) { echo ""; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo ""; } } 然后即可看到原理就是这样,就是重组下数组,然后遍历输出就行了。以上就是php实现畅言留言板和网易跟帖样式的全部过程,大家也可以尝试进行创新,希望这篇文章对大家的学习有所帮助。您可能感兴趣的文章:php实现留言板功能(会话控制)PHP结合Mysql数据库实现留言板功能php+ajax制作无刷新留言板php简单的留言板与回复功能具体实现php开发留言板的CRUD(增,删,改,查)操作来自经典的打造简单的PHP&MYSQL留言板使用PHP开发留言板功能 上一条: PHP实现HTML页面静态化的方法 下一条: php对二维数组进行相关操作(排序、转换、去空白等) 昵称: 邮箱: 0条评论 (评论内容有缓存机制,请悉知!)最新最热 分类目录 人生(杂谈) 技术 linux Java php 框架(架构) 前端 ThinkPHP 数据库 微信(小程序) Laravel Redis Docker Go swoole Windows Python 苹果(mac/ios) 相关文章 Laravel从Accel获得5700万美元A轮融资(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) 用Time Warden监控PHP中的代码处理时间(0个评论) 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论) Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论) 近期文章 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论) gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论) 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论) Laravel从Accel获得5700万美元A轮融资(0个评论) 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论) 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论) 近期评论 122 在学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人.. 123 在Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分.. 原梓番博客 在在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。.. 博主 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章.. 1111 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光.. 文章归档 2016-10 2016-11 2017-06 2017-07 2017-08 2017-09 2017-11 2017-12 2018-01 2018-02 2018-03 2020-03 2020-04 2020-05 2020-06 2020-07 2020-09 2021-02 2021-03 2021-04 2021-05 2021-06 2021-07 2021-08 2021-09 2021-10 2021-11 2021-12 2022-01 2022-02 2022-05 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 2022-12 2023-01 2023-02 2023-03 2023-04 2023-05 2023-06 2023-07 2023-08 2023-09 2023-10 2023-11 2023-12 2024-01 2024-02 2024-03 2024-04 2024-05 2024-06 2024-07 2024-09 Top
我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的
畅言留言板样式:
网易跟帖样式:
原理需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、回复人什么的。其中pid就是当前已经回复过的评论的id。从上图可以看出,里面每一层的pid就是就是他上一层评论的id。仔细观察下上面的布局。是不是很像PHP中的多维数组?如果你能想到,那么就简单了。实现方法1.前台:这个比较简单 就是div嵌div。然后设置div的border和margin padding就行了
2、后台 :用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可comment表结构和内容如下然后直接读出这个表中的所有评论。可以得到如下数组Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 ) [3] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 ) [4] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 ) [5] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 ) [6] => Array ( [id] => 7 [pid] => 4 [content] => 评论7回复评论4 ) [7] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 ) [8] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 ) [9] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 ) ) 然后我们就需要把这个数组重组成上面的那种留言板形式的其中$array就是上面读取出来的数组,首先取出pid默认为空的,然后递归,在取出pid为当前评论id的数组public static function tree($array,$child="child", $pid = null) { $temp = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v[$child] = self::tree($array,$child,$v['id']); $temp[] = $v; } } return $temp; } 重组后,可以得到下面的这个数组,可以看到,这个数组的样式已经和前台评论样式很像了Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 [child] => Array ( [0] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 [child] => Array ( [0] => Array ([id] => 7[pid] => 4[content] => 评论7回复评论4[child] => Array ( [0] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 [child] => Array ( [0] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 [child] => Array ( ) ) [1] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 [child] => Array ( ) ) ) ) )) ) ) [1] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 [child] => Array ( ) ) ) ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 [child] => Array ( [0] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 [child] => Array ( ) ) ) ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 [child] => Array ( ) ) ) 得到上面的数组后 ,再用递归输出即可public static function traverseArray($array) { foreach ($array as $v) { echo ""; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo ""; } } 然后即可看到原理就是这样,就是重组下数组,然后遍历输出就行了。以上就是php实现畅言留言板和网易跟帖样式的全部过程,大家也可以尝试进行创新,希望这篇文章对大家的学习有所帮助。您可能感兴趣的文章:php实现留言板功能(会话控制)PHP结合Mysql数据库实现留言板功能php+ajax制作无刷新留言板php简单的留言板与回复功能具体实现php开发留言板的CRUD(增,删,改,查)操作来自经典的打造简单的PHP&MYSQL留言板使用PHP开发留言板功能 上一条: PHP实现HTML页面静态化的方法 下一条: php对二维数组进行相关操作(排序、转换、去空白等) 昵称: 邮箱: 0条评论 (评论内容有缓存机制,请悉知!)最新最热 分类目录 人生(杂谈) 技术 linux Java php 框架(架构) 前端 ThinkPHP 数据库 微信(小程序) Laravel Redis Docker Go swoole Windows Python 苹果(mac/ios) 相关文章 Laravel从Accel获得5700万美元A轮融资(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) 用Time Warden监控PHP中的代码处理时间(0个评论) 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论) Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论) 近期文章 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论) gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论) 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论) 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论) Laravel从Accel获得5700万美元A轮融资(0个评论) 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论) 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论) PHP 8.4 Alpha 1现已发布!(0个评论) Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论) 近期评论 122 在学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人.. 123 在Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分.. 原梓番博客 在在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。.. 博主 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章.. 1111 在佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光.. 文章归档 2016-10 2016-11 2017-06 2017-07 2017-08 2017-09 2017-11 2017-12 2018-01 2018-02 2018-03 2020-03 2020-04 2020-05 2020-06 2020-07 2020-09 2021-02 2021-03 2021-04 2021-05 2021-06 2021-07 2021-08 2021-09 2021-10 2021-11 2021-12 2022-01 2022-02 2022-05 2022-06 2022-07 2022-08 2022-09 2022-10 2022-11 2022-12 2023-01 2023-02 2023-03 2023-04 2023-05 2023-06 2023-07 2023-08 2023-09 2023-10 2023-11 2023-12 2024-01 2024-02 2024-03 2024-04 2024-05 2024-06 2024-07 2024-09 Top
2、后台 :用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可comment表结构和内容如下
然后直接读出这个表中的所有评论。可以得到如下数组
Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 ) [3] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 ) [4] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 ) [5] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 ) [6] => Array ( [id] => 7 [pid] => 4 [content] => 评论7回复评论4 ) [7] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 ) [8] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 ) [9] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 ) )
然后我们就需要把这个数组重组成上面的那种留言板形式的其中$array就是上面读取出来的数组,首先取出pid默认为空的,然后递归,在取出pid为当前评论id的数组
public static function tree($array,$child="child", $pid = null) { $temp = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v[$child] = self::tree($array,$child,$v['id']); $temp[] = $v; } } return $temp; }
重组后,可以得到下面的这个数组,可以看到,这个数组的样式已经和前台评论样式很像了
Array ( [0] => Array ( [id] => 1 [pid] => [content] => 评论1 [child] => Array ( [0] => Array ( [id] => 4 [pid] => 1 [content] => 评论4回复评论1 [child] => Array ( [0] => Array ([id] => 7[pid] => 4[content] => 评论7回复评论4[child] => Array ( [0] => Array ( [id] => 8 [pid] => 7 [content] => 评论8回复评论7 [child] => Array ( [0] => Array ( [id] => 9 [pid] => 8 [content] => 评论9回复评论8 [child] => Array ( ) ) [1] => Array ( [id] => 10 [pid] => 8 [content] => 评论10回复评论8 [child] => Array ( ) ) ) ) )) ) ) [1] => Array ( [id] => 5 [pid] => 1 [content] => 评论5回复评论1 [child] => Array ( ) ) ) ) [1] => Array ( [id] => 2 [pid] => [content] => 评论2 [child] => Array ( [0] => Array ( [id] => 6 [pid] => 2 [content] => 评论6回复评论2 [child] => Array ( ) ) ) ) [2] => Array ( [id] => 3 [pid] => [content] => 评论3 [child] => Array ( ) ) )
得到上面的数组后 ,再用递归输出即可
public static function traverseArray($array) { foreach ($array as $v) { echo ""; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo ""; } } 然后即可看到原理就是这样,就是重组下数组,然后遍历输出就行了。以上就是php实现畅言留言板和网易跟帖样式的全部过程,大家也可以尝试进行创新,希望这篇文章对大家的学习有所帮助。您可能感兴趣的文章:php实现留言板功能(会话控制)PHP结合Mysql数据库实现留言板功能php+ajax制作无刷新留言板php简单的留言板与回复功能具体实现php开发留言板的CRUD(增,删,改,查)操作来自经典的打造简单的PHP&MYSQL留言板使用PHP开发留言板功能
然后即可看到
原理就是这样,就是重组下数组,然后遍历输出就行了。
以上就是php实现畅言留言板和网易跟帖样式的全部过程,大家也可以尝试进行创新,希望这篇文章对大家的学习有所帮助。
昵称:
邮箱:
122 在
123 在
原梓番博客 在
博主 在
1111 在
Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号
2、后台 :用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可
comment表结构和内容如下
然后直接读出这个表中的所有评论。可以得到如下数组
然后我们就需要把这个数组重组成上面的那种留言板形式的
其中$array就是上面读取出来的数组,首先取出pid默认为空的,然后递归,在取出pid为当前评论id的数组
重组后,可以得到下面的这个数组,可以看到,这个数组的样式已经和前台评论样式很像了
得到上面的数组后 ,再用递归输出即可
上一条:
PHP实现HTML页面静态化的方法
下一条:
php对二维数组进行相关操作(排序、转换、去空白等)
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..