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

原文:http://justcoding.iteye.com/blog/2251192

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

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就行了

Html代码

<div class="comment">

<div class="comment">

<div class="comment">

</div>

</div>

</div>

<div class="comment">

</div>

2、后台   用到了两次递归,首先用递归把数据库中的结果重组下,重组之后,然后用递归输出上面的那种前台代码即可

comment表结构和内容如下

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

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的数组

Php代码

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;

}

重组后,可以得到下面的这个数组,可以看到,这个数组的样式已经和前台评论样式很像了。

Php代码

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

(

)

)

)

得到上面的数组后 ,再用递归输出即可。

Php代码

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实现畅言留言板和网易跟帖样式

时间: 2024-10-20 08:53:50

PHP实现畅言留言板和网易跟帖样式的相关文章

Repeater+AspNetPager+Ajax留言板

最近想要巩固下基础知识,于是写了一个比较简单易懂实用的留言板. 部分样式参考了CSDN(貌似最近一直很火),部分源码参照了Alexis. 主要结构: 1.前期准备 2.Repeater+AspNetPager分页效果 3.Ajax无刷新留言板,插入和删除留言 4.自定义编号 5.总结 先上效果图:(PS:美工很一般) 1.前期准备: 1.数据库:自增ID,用户名,留言内容,用户头像,留言时间. 2.实体类:对应数据库的字段 3.数据访问层: 2.Repeater+AspNetPager分页效果

5分钟编写一个PHP留言板程序

1.创建数据库 以下为sql代码,推荐采用phpmyadmin创建数据库. CREATE DATABASE IF NOT EXISTS db_liuyan; USE db_liuyan; CREATE TABLE ly( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(20) NOT NULL, email VARCHAR(100) NOT NULL, content TEXT NOT NULL, date TIMEST

【weiphp微信开发教程】留言板插件开发详解

基于weiphp框架的留言板插件教程: 1.功能分析 传统的留言板应该具有发布留言.查看留言.回复留言.管理留言等功能,本教程开发的是最基本的留言板,仅包含发布留言和查看留言两个功能,根据功能用bootstrap制作的前台页面样式如下: 2.新建weiphp插件 在第一步我们根据留言板的功能需求设计了前台效果页面,那么接下来的步骤就是根据效果来逐步开发weiphp插件了 第一步,在weiphp后台管理页面创建一个插件,记得把是否需要配置项和是否需要管理列表两个选项都选为“是” 第二步,安装创建好

html的留言板制作(js)

这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论楼层(可实现,但是插进去十分不美观). 编辑效果如下: 文件为html文件,编写的方式主要为div+css布局和js.本人的有点在于编写类似于后台功能和js的实现较快.但是缺点在于前端的编写较为薄弱. 在学长的帮助下前端的设计还是比较美观的.下面我将开放记事本的全部源码. <!DOCTYPE HTM

(详细)php实现留言板---会话控制-----------2017-05-08

要实现留言功能,发送者和接受者必不可少,其次就是留言时间留言内容. 要实现的功能: 1.登录者只能查看自己和所有人的信息,并能够给好友留言 2.留言板页面,好友采取下拉列表,当留言信息为空时,显示提示,并停留在当前页面 3.查看过的信息,消息显示已读 4.用$_SESSION[]获取登陆者,并用$_SESSION[]防止用户绕过登录直接进入主页面 第一步建数据库: 需要用到的三张表分别为:friend表,yuangong表,chenai表 yuangong表: friend表: chenai表

搜狐畅言社交化评论插件接入之单点登录

很久以前就想做关于Jfinal的社区,可是苦于不像去写那种留言与回复的那种功能,于是就想着要通过第三方的那种社交评论插件去完成这种功能呢,而且还想着去使用那种一件登录,可是又不想去申请所谓的APPKEY和APPID,处于这种偷懒的心态,所以就有了这一篇博文.假如你也有这种类似的想法,大家可以一起来看看. 关于这个插件,我就不多说了,链接在这里大家自己去点,完了自己去了解,申请账号及相关的设置. 畅言插件主页: http://changyan.kuaizhan.com/ 重要的: 强烈建议大家在使

自己做的一个登陆注册留言板的界面未实现功能求指点 待更。。。。。。

MAIN结构 //// <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="Main" %> <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta ht

「留言板」

其实这是个 不正经的->「留言板」<-… |于是rt求留言 言 留言 留个言 求留个言 跪求留个言 麻烦您留个言 求求您了留个言 能不能过来留个言 爱留不留最好留个言 走过路过都要来留个言 有话没话您最好来留个言 没话找话您也得过来留个言 如果您无聊就来给我我留个言 然而没人搭理我看到您就留个言 如果有事您一定要过来这里留个言 我不知道这东西能不能让你们留个言 我可能疯了于是写了这个逼你们留个言 真的是我自己写的如果信了您就来留个言 …… 我真是闲的…… 于是继续闲 我来归未得 是客异乡愁 蒟

会话控制之留言板

//要用session做一个留言板 //首先先做一个loginn.php文件  做出个用户可以输入的表单 //将这个表单提交给另一个页面dlchuli.php对用户输入的用户名和密码进行处理 //在这个dlchuli.php页面中先开启session //运用post方法来获取到用户输入的用户名和密码 //再通过用户输入的用户名和密码从数据库里找需要匹配的数据信息 //这个页面就是来确认下用户输入的信息是否正确,若正确就跳转到主页面.mainn.php //在建一个主页面来显示留言和发布留言消息