本文目录一览:
php留言板的回复怎么做?
首先得设计好数据库,留言一个表,回复一个表,然后把留言表中关键字ID关联到回复表中。
比如:
留言表:message
id
contents
user
time
回复表:reply
id
m_id 关联留言表中的id
contents
user
time
然后程序方面把对应的留言、回复保存到相应的表中,读取的时候先遍历留言表,然后通过留言表id再读取对应的回复数据。
php 留言板 留言和回复
看了你的问题.和数据库的2个表设计.
1.先确定数据表的设计.
留言表 message
字段:
msgid
uid
content
postdate
回复表replies
repliesid
uid
msgid
content
postdate
这样的设计表,我认为是最好的。符合数据库的范式,主要是简单明了,简单就意味着性能.
2.怎么把数据库合理的提取出来,只能说是从代码上着手.
第一种最直接的方法。
$sql = "select * FROM message order postdate desc";
得到$messages留言的数组
foreach ($message as $key = $value) {
$sql = "select * from replies where msgid = ".$value['msgid'];
得到留言对应的回复$replies
$message[$key]['replies'] = $replies;
}
最终得到数组$message;
前台显示:
foreach( $messsage as $key = $value ) {
echo $value[‘content']; //显示留言
foreach( $value['replies'] as $k = $val ) {
echo $val['content'];//显示该留言下的恢复
}
}
第二中方法,我比较喜欢,而且也一直在用
$sql = "select * FROM message order postdate desc";
得到$messages;
通过处理得到,数组$messages中的所有msgid,并存入一维数$msgids
$msgids = array();
$result = array(); //这个数组转化$messages用的.因为我们要把$messages的key值变成msgid
foreach( $message as $key = $value ) {
$msgids[] = $value['msgid'];
$result[$value['msgid']] = $value;
}
unset($messages); 这个数据就没有用了。因为已经有$result;
一次性查询出,这些留言需要的所有回复,$replies;
$sql = "select * from replies WHERE msgid in (".implode(',',$msgids).") order by postdate desc";
foreach( $replies as $key = $value ){
$result[$value['msgid']]['replies'][] = $value;
}
前台显示:
foreach( $resultas $key = $value ) {
echo $value[‘content']; //显示留言
foreach( $value['replies'] as $k = $val ) {
echo $val['content'];//显示该留言下的恢复
}
}
求助,php实现留言板多次回复功能怎么建数据表
加一个 pid 字段,保存回复的上级回复id,若没有回复某条回复就是0
若有 pid 就显示 回复某某~