`
天梯梦
  • 浏览: 13747820 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

php实现畅言留言板和网易跟帖样式

 
阅读更多

我要实现的就是下图的这种样式,可参考下面这两个网站的留言板,他们的实现原理都是一样的

http://changyan.sohu.com/blog/?p=177

http://www.reddit.com/r/wow/comments/2y6739/method_vs_blackhand_mythic_kill_video_world_1st/

php实现畅言留言板和网易跟帖样式
php实现畅言留言板和网易跟帖样式

 

php实现畅言留言板和网易跟帖样式
php实现畅言留言板和网易跟帖样式

 

原理

需要在评论表添加两个主要字段 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表结构和内容如下

php实现畅言留言板和网易跟帖样式
php实现畅言留言板和网易跟帖样式

然后直接读出这个表中的所有评论。可以得到如下数组

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>";
 
    }
 
}

 

然后即可看到

php实现畅言留言板和网易跟帖样式
php实现畅言留言板和网易跟帖样式

原理就是这样 ,就是重组下数组,然后遍历输出就行了。

 

原文:http://www.cnsecer.com/7211.html

转自:php实现畅言留言板和网易跟帖样式

 

 

 

分享到:
评论

相关推荐

    php实现网站留言板功能

    本文主要讨论如何利用PHP技术实现一个网站留言板功能,其中包括对仿照畅言留言板和网易跟帖样式的设计理念和实现方法的介绍。 首先,建立留言板的基础是数据库的设计,其中需要包括两个关键字段id和pid,这两个字段...

    易优eyoucms畅言云评论插件(超强大的评论互动)

    - **实时更新**:畅言云评论插件支持实时评论推送,用户无需刷新页面即可看到新评论,增强在线交流体验。 - **多级回复**:允许用户对评论进行多级回复,形成话题讨论,增加用户参与度。 - **表情与图片**:支持...

    织梦CMS仿畅言评论插件_畅言评论插件(织梦)_织梦_

    本主题聚焦于如何在织梦CMS中安装和使用“畅言评论插件”,它是一个集成的评论解决方案,能够提升网站互动性和用户体验。 “畅言评论插件”是由新浪公司提供的服务,允许用户在网站上添加类似微博的评论功能,支持...

    畅言交互式多媒体教学系统原版安装包及资源.txt

    本文件包含了畅言交互式多媒体教学系统安装包和配套的本地语音合成引擎,仿真实验资源安装包,教育基础资源安装包和配置更新;还有畅言交互式多媒体教学系统丰富的课本资源。 畅言简介:畅言交互式多媒体教学系统是...

    最新畅言交互式教学系统考试考核试题

    畅言交互式教学系统是当前教育领域中的一种趋势型教学工具,旨在提高教学效率和教学质量。本系统提供了多种交互式教学资源和工具,为教师们提供了丰富的教学资源和教学方法。以下是本系统考试考核试题的知识点摘要:...

    android畅言评论+仿iOS单行的日期选择器功能

    在Android平台上,我们可以使用DatePickerDialog或者TimePickerDialog来实现类似的效果,但这些组件默认的样式与iOS有所不同。为了达到iOS的视觉效果,开发者需要自定义布局,调整控件的颜色、字体、尺寸等属性。...

    畅言Wordpress插件 v1.1 官方版.zip

    畅言是由搜狐公司推出的多功能评论插件,畅言Wordpress插件提供无缝嵌入wordpress后台。 功能介绍: 1、评论审核 在评论审核模块中您可以直接查看网站的待审核评论、已审核评论、已删除评论,直接对网站的评论...

    [原创]帝国cms仿畅言简约版响应式插件.zip

    插件特色: 0、支持(7.0&7.2)gbk、utf8两种编码,开源下载 1、增加了一套和畅言一样的表情(选择安装) 2、增加添加远程图片 3、支持顶、踩(增加了很有意思的+1动画) 4、支持3种翻页模式:页面追加、滚动加载、...

    畅言教师助手v4.0.6官方免费安装版

    畅言教师助手是一个专业的教学软件。本软件为教师用户提供了便捷化的远程教学功能,涵盖了全学科的正版教材知识点,课本内容即点即读,而且具备语音评测功能。教师用户可以在线进行互动授课,支持英语朗读、航宇朗读...

    畅言智能语言教学系统及OFFICE2021教育标准版正版软件借鉴.pdf

    畅言智能语言教学系统和OFFICE2021教育标准版正版软件是教育机构和学生不可或缺的教学和学习工具,可以提高教学和学习的效率和质量。 知识点: 1.畅言智能语言教学系统的技术架构基于云计算和人工智能等技术。 2. ...

    畅言交互式多媒体教学系统(iFLyBook)v1.0.0.2中文安装免费版版

    iFLyBook畅言交互式多媒体教学系统是一款由科大讯飞推出的新一代教学辅助软件,软件将智能语音核心技术、计算机信息技术、多媒体资源与教学硬件设备紧密结合,可以有效地实现教师现代化和智能化,拥有支持语音智能...

    畅言智慧课堂教学系统v4.0官方免费安装版

    畅言智慧课堂是一款非常好用的专门针对教育培训机构打造的在线教学系统,科大讯飞为老师提供了网络备课、在线授课、作业发送等功能,为学生提供了课堂互动、电子课本、优秀作文选等应用,为家校、师生、同学、教工...

    畅言教学通pc版v4.0.12官方安装版

    畅言教学通是以一款以学习方式和教育模式创新为核心的一云多屏智慧教育解决方案,本版本专门为教师打造, 覆盖课前备课/课中授课/课后延伸等多种教学场景,常态化助力老师、服务家长与学生,以“智慧教育”打造...

    2012畅言 普通话测试 试题全16套

    2012畅言 普通话测试 2012畅言 普通话测试 试题全16套 (2试题全16套 (2

    畅言互联客户端v1.0.0官方安装版

    畅言互联客户端是一款全方位服务家校师生的智慧教育解决方案产品,基于科大讯飞优质的教育服务体系,提供教学、管理、学习三位一体的应用入口,覆盖备授课、办公管理、自主学习、家校互动等多种场景,为学校提供一站...

    畅言交互式多媒体教学系统培训材料.pdf

    【畅言交互式多媒体教学系统】是一款专为教育领域设计的智能教学软件,它结合了科大讯飞的先进智能语音技术,旨在提供全学科的交互式...通过详尽的培训,教师可以充分利用该系统的优势,实现教学过程的现代化和个性化。

    畅言情感互助网站.zip

    "畅言情感互助网站"是一个在线平台,旨在为用户提供一个互相交流、分享情感问题和寻求心理支持的空间。在这个网站中,人们可以匿名或实名参与,发表自己的情感困扰,得到他人的建议和鼓励,实现心理上的互助与共鸣。...

    springboot畅言情感互助网站计算机毕业生设计.zip

    详细设计主要包括系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对系统进行功能测试,并对测试结果进行分析总结。 包括程序毕设程序源代码一份,数据库一份,完美运行。配置环境里面有...

    利用畅言系统制作多媒体课件.ppt

    畅言交互式多媒体教学系统,正是这样一个集合了最新科技的智能语音技术软件,它不仅为教师提供了强大的教学工具,同时也为学生创造了一个更加生动和有趣的学习环境。 畅言系统的设计初衷是提升多媒体环境下的教学...

    畅言智能语音教具系统-论文大赛.pdf

    不仅如此,畅言智能语音教具系统还具备中英文对照朗读、生词表查询等功能,生词表如同一本动态的词典,支持点读、跟读和模仿,极大地便利了教师和学生查找和学习新词汇。增强版的系统更是增加了磁带播放、光盘播放、...

Global site tag (gtag.js) - Google Analytics