亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php 留言板 留言和回復

php 留言板 留言和回復

PHP
UYOU 2018-06-24 00:00:36
兩張表留言表 mess id,u_id //用戶id, time, mess回復表 reply id,u_id,time,mess,p_id //要回復留言的id怎樣查詢 才能在頁面 顯示所有的留言和回復 
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

看了你的問題.和數據庫的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'];//顯示該留言下的恢復
}
}

查看完整回答
反對 回復 2018-07-29
  • 1 回答
  • 0 關注
  • 1458 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號