主頁(yè) > 知識(shí)庫(kù) > php實(shí)現(xiàn)文章評(píng)論系統(tǒng)

php實(shí)現(xiàn)文章評(píng)論系統(tǒng)

熱門標(biāo)簽:電梯外呼線路板維修視頻 十堰ai電話機(jī)器人效果怎么樣 上海公司外呼系統(tǒng)線路 浙江外呼電話系統(tǒng)軟件 安陽(yáng)自動(dòng)外呼系統(tǒng)價(jià)格是多少 地圖標(biāo)注風(fēng)向標(biāo) 臨沂智能電銷機(jī)器人軟件 芒果電銷機(jī)器人 銀川ai電話機(jī)器人

最近工作中需要完成一個(gè)評(píng)論的功能,上網(wǎng)查找了幾個(gè)評(píng)論系統(tǒng)的展示樣式。最后參考“多說(shuō)”和“暢言”等評(píng)論系統(tǒng),自己使用PHP語(yǔ)言實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的評(píng)論系統(tǒng)。并記錄了兩種方式(遞歸方式和非遞歸方式)的實(shí)現(xiàn)過(guò)程,以及分析兩種方式的優(yōu)缺點(diǎn),但前端如何實(shí)現(xiàn)就沒有展現(xiàn)了。

首先設(shè)計(jì)數(shù)據(jù)庫(kù)如下:

create table `comments`(
 `id` bigint unsigned not null AUTO_INCREMENT,
 `arc_id` bigint unsigned not null COMMENT '文章id',
 `user_id` bigint unsigned not null COMMENT '用戶id',
 `comment_id` bigint unsigned not null DEFAULT '0' COMMENT '回復(fù)某個(gè)評(píng)論的id',
 `content` varchar(255) not null DEFAULT '' COMMENT '評(píng)論或回復(fù)的內(nèi)容',
 `add_time` timestamp not null DEFAULT CURRENT_TIMESTAMP COMMENT '添加時(shí)間',
 PRIMARY KEY (`id`),
 KEY `arc_id` (`arc_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '文章評(píng)論表';

創(chuàng)建測(cè)試數(shù)據(jù)如下:

具體實(shí)現(xiàn)方案如下(在ThinkPHP框架上實(shí)現(xiàn)):

1、遞歸方式

優(yōu)點(diǎn):實(shí)現(xiàn)代碼簡(jiǎn)單,而且如果評(píng)論的層級(jí)固定在5個(gè)層次一下的話,建議使用該種方法,這樣前端通過(guò)這種數(shù)據(jù)結(jié)果實(shí)現(xiàn)簡(jiǎn)單。

缺點(diǎn):如果評(píng)論的層級(jí)沒有固定的話,前端將無(wú)法展示評(píng)論信息了,而且如果層級(jí)太多的話,將會(huì)極大的消耗內(nèi)存,更要命的是每次遞歸都得查詢數(shù)據(jù)庫(kù),性能將大大的降低。

/**
 * @param $arc_id  文章id
 * @param int $comm_id  評(píng)論id
 * @param array $result
 * @return array
 */
function getCommlist($arc_id, $comm_id = 0, $result = array()){  //獲取評(píng)論列表
 if(empty($arc_id)){
 return array();
 }
 $_where = "arc_id = {$arc_id} AND comment_id = {$comm_id}";
 $res = M('comments')->where($_where)->order('add_time DESC')->select();
 if(empty($res)){
 return array();
 }
 foreach ($res as $cm) {
 $thisArr = $result[];
 $cm["_child"] = getCommlist($arc_id,$cm['id'],$thisArr);
 $thisArr = $cm;
 }
 
 return $result;
}

部分?jǐn)?shù)據(jù)展示如下:

2、非遞歸方式(堆棧方式實(shí)現(xiàn))

優(yōu)點(diǎn):只查詢一次數(shù)據(jù)庫(kù),性能較好。可以實(shí)現(xiàn)n層級(jí)的評(píng)論,前端也能很好的展示

缺點(diǎn):代碼稍微復(fù)雜,對(duì)于固定的層級(jí)評(píng)論,前端展示評(píng)論較為復(fù)雜。

/**
 * @param $arc_id 文章id
 * @return array
 */
public function getCommlist($arc_id){
 if(empty($arc_id)){
 return array();
 }
 $res = M('comments')->where(array('arc_id'=>$arc_id))->order('add_time ASC')->select();
 $dataList = $stack = array();
 if($res){
 foreach($res AS $k=>$v){  //先將評(píng)論的數(shù)據(jù)進(jìn)行入庫(kù)(即comment_id=0)
  if($v['comment_id'] == 0){
  $v['_level'] = 0;  //設(shè)置層級(jí)數(shù)
  $v['_root'] = $v['id'];  //標(biāo)識(shí)評(píng)論id
  array_push($stack,$v);  //入棧
  unset($res[$k]);
  }
 }
 
 while(!empty($stack)){
  $node = array_pop($stack);  //出棧
  $dataList[] = $node;
  foreach($res as $_k=>$_v){
  if($_v['comment_id'] == $node['id']){
   $_v['_level'] = $node['_level']+1;  //設(shè)置層級(jí)數(shù)
   $_v['_root'] = $node['_root'];  //標(biāo)識(shí)評(píng)論id
   array_push($stack,$_v);  //入棧
   unset($res[$_k]);
  }
  }
 }
 }
 
 return $dataList;
}

數(shù)據(jù)展示效果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP+Mysql無(wú)刷新問(wèn)答評(píng)論系統(tǒng)(源碼)
  • PHP Ajax實(shí)現(xiàn)頁(yè)面無(wú)刷新發(fā)表評(píng)論
  • PHP Ajax實(shí)現(xiàn)頁(yè)面無(wú)刷新發(fā)表評(píng)論
  • 使用AngularJS和PHP的Laravel實(shí)現(xiàn)單頁(yè)評(píng)論的方法
  • php實(shí)現(xiàn)評(píng)論回復(fù)刪除功能
  • ThinkPHP上使用多說(shuō)評(píng)論插件的方法
  • PHP抓取淘寶商品的用戶曬單評(píng)論+圖片+搜索商品列表實(shí)例
  • PHP仿qq空間或朋友圈發(fā)布動(dòng)態(tài)、評(píng)論動(dòng)態(tài)、回復(fù)評(píng)論、刪除動(dòng)態(tài)或評(píng)論的功能(上)
  • 詳解WordPress中調(diào)用評(píng)論模板和循環(huán)輸出評(píng)論的PHP函數(shù)

標(biāo)簽:荊門 常州 徐州 武威 遂寧 寧夏 遵義 吐魯番

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)文章評(píng)論系統(tǒng)》,本文關(guān)鍵詞  php,實(shí)現(xiàn),文章,評(píng)論,系統(tǒng),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實(shí)現(xiàn)文章評(píng)論系統(tǒng)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php實(shí)現(xiàn)文章評(píng)論系統(tǒng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章