我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的
http://changyan.sohu.com/blog/?p=177
http://www.reddit.com/r/wow/comments/2y6739/method_vs_blackhand_mythic_kill_video_world_1st/
和
原理
需要在评论表添加两个主要字段 id 和 pid ,其他字段随意添加,比如文章id、回复时间、回复内容、回复人什么的。
其中pid就是当前已经回复过的评论的id。
从上图可以看出,里面每一层的pid就是就是他上一层评论的id。仔细观察下上面的布局。是不是很像PHP中的多维数组?如果你能想到,那么就简单了。
实现方法
1.前台 这个比较简单 就是div嵌div。然后设置div的border和margin padding就行了
<div class="comment"> <div class="comment"> <div class="comment"> </div> </div> </div> <div class="comment"> </div>
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 "<div class='comment' style='width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;'>"; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo "</div>"; } }
然后即可看到
原理就是这样 ,就是重组下数组,然后遍历输出就行了。
原文:http://www.cnsecer.com/7211.html
相关推荐
主要介绍了php实现网站留言板功能,主要仿照了畅言留言板和网易跟帖样式进行制作,感兴趣的小伙伴们可以参考一下
本文件包含了畅言交互式多媒体教学系统安装包和配套的本地语音合成引擎,仿真实验资源安装包,教育基础资源安装包和配置更新;还有畅言交互式多媒体教学系统丰富的课本资源。 畅言简介:畅言交互式多媒体教学系统是...
最新畅言交互式教学系统考试考核试题
畅言是由搜狐公司推出的多功能评论插件,畅言Wordpress插件提供无缝嵌入wordpress后台。 功能介绍: 1、评论审核 在评论审核模块中您可以直接查看网站的待审核评论、已审核评论、已删除评论,直接对网站的评论...
iFLyBook畅言交互式多媒体教学系统是一款由科大讯飞推出的新一代教学辅助软件,软件将智能语音核心技术、计算机信息技术、多媒体资源与教学硬件设备紧密结合,可以有效地实现教师现代化和智能化,拥有支持语音智能...
畅言教师助手是一个专业的教学软件。本软件为教师用户提供了便捷化的远程教学功能,涵盖了全学科的正版教材知识点,课本内容即点即读,而且具备语音评测功能。教师用户可以在线进行互动授课,支持英语朗读、航宇朗读...
android开发,eclipse工程文件,实现畅言开放平台评论功能,同步实现android中DatePick与仿iOS日期选择的功能
畅言智慧课堂是一款非常好用的专门针对教育培训机构打造的在线教学系统,科大讯飞为老师提供了网络备课、在线授课、作业发送等功能,为学生提供了课堂互动、电子课本、优秀作文选等应用,为家校、师生、同学、教工...
畅言教学通是以一款以学习方式和教育模式创新为核心的一云多屏智慧教育解决方案,本版本专门为教师打造, 覆盖课前备课/课中授课/课后延伸等多种教学场景,常态化助力老师、服务家长与学生,以“智慧教育”打造...
2012畅言 普通话测试 2012畅言 普通话测试 试题全16套 (2试题全16套 (2
畅言互联客户端是一款全方位服务家校师生的智慧教育解决方案产品,基于科大讯飞优质的教育服务体系,提供教学、管理、学习三位一体的应用入口,覆盖备授课、办公管理、自主学习、家校互动等多种场景,为学校提供一站...
详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有...
插件特色: 0、支持(7.0&7.2)gbk、utf8两种编码,开源下载 1、增加了一套和畅言一样的表情(选择安装) 2、增加添加远程图片 3、支持顶、踩(增加了很有意思的+1动画) 4、支持3种翻页模式:页面追加、滚动加载、...
畅言交互式多媒体教学系统培训材料.pdf
畅言智能语言教学系统及OFFICE2021教育标准版正版软件借鉴.pdf
畅言情感互助网站
英语阅读,听力,课件。跟课阅读。
多说停止使用,改为zblog默认评论框,可以选用网易云跟帖和搜狐畅言,需自行配置。2.删除页面中的赞赏分享插件,如需要自行去应用中心搜索安装即可。3.推荐配合:SitemapXML生成器 1.0 、 TagCloud 两
根据自己站点编码情况,选择对应编码的畅言评论模块插件,这里我们以UTF-8编码版本为例,在后台【模块】-【上传新模块】中选择模块打包的xml文件,点击确定完成上传