2013-11-28 101 views
0

我想要做的就是對每條評論添加回復到我的評論系統,但我不知道該怎麼去做,有人可以向我展示或向我解釋如何添加此內容。添加回複評論系統

這是我的評論數據庫表。

id 
user_id 
target_id 
comment 
date_added 
ip 
type 

這裏是我使用

public function addMovieComment($movieid, $comment, $user_id, $ip){ 
    $comment = stripslashes(strip_tags($comment)); 
    $comment = mysql_real_escape_string($comment); 
    $movieid = mysql_real_escape_string($movieid); 
    $user_id = mysql_real_escape_string($user_id); 
    $ip = stripslashes(strip_tags($ip)); 
    $ip = mysql_real_escape_string($ip); 
    if (!($e = mysql_query("SELECT * FROM comments WHERE target_id='{$movieid}' AND user_id='{$user_id}' AND comment='{$comment}' AND type=2 AND ip='{$ip}'"))) { 
     exit(mysql_error()); 
    } 
    if (mysql_num_rows($e) == 0) { 
     if (!($e = mysql_query("INSERT INTO comments(target_id,user_id,comment,date_added,type,ip) VALUES('{$movieid}','{$user_id}','{$comment}',NOW(),2,'{$ip}')"))) { 
      exit(mysql_error()); 
     } 
    } 
} 

public function getMovieComments($movieid){ 
    $movieid = mysql_real_escape_string($movieid); 
    if (!($e = mysql_query("SELECT comments.*,users.username, users.avatar FROM comments,users WHERE comments.user_id=users.id AND comments.type=2 AND comments.target_id={$movieid} ORDER BY comments.id DESC"))) { 
     exit(mysql_error()); 
    } 
    $comments = array(); 
    while (mysql_num_rows($e) && ($s = mysql_fetch_array($e))) { 
     extract($s); 
     $comments[$id]    = array(); 
     $comments[$id]['comment'] = stripslashes($comment); 
     $comments[$id]['user_id'] = $user_id; 
     $comments[$id]['username'] = $username; 
     $comments[$id]['date_added'] = $date_added; 
     $comments[$id]['avatar']  = $avatar; 
    } 
    return $comments; 
} 

功能這裏是我如何調用該函數添加並獲得意見。

if ((@$comment) && (@$addcomment) && (@$_SESSION['loggeduser_id'] && (@$ip))){ 
    $comm->addMovieComment($mov['id'],$comment,$_SESSION['loggeduser_id'],$ip); 
} 

$comments = $comm->getMovieComments($mov['id']); 
if (!count($comments)){ $comments = ''; $commentcount = 0; } else { $commentcount = count($comments); } 
$smarty->assign("comments",$comments); 
$smarty->assign("commentcount",$commentcount); 

if ($commentcount==1){ 
    $smarty->assign("comment_title",$commentcount." comment"); 
} else { 
    $smarty->assign("comment_title",$commentcount." comments"); 
} 

我該怎麼去添加呢?

+0

爲什麼不使用disqus或其他完善的評論系統而不是試圖開發自己的? – Charles

+3

答覆只是碰巧有一個「父」的另一個評論。你的評論表中的「reply_to」字段並指向新的「評論」是回覆的記錄。 –

+0

有時你喜歡做硬核的挑戰,也可以自己做呢? :-) – vogomatix

回答

0

這不是一個完整的答案,但一些提示和技巧。

想必您的電影是關於電影的文章,它可能有助於將附加到更通用對象的評論視爲比電影更具體的內容。

首先,如果您開始將評論和文章作爲對象來考慮,那麼您需要評論類和文章類。如果你很好,你可以創建一個CommentView和ArticleView類,它將成爲下面模型的View類。

您的評論類將需要添加和刪除方法,以及其他一些方法。與文章類似。

您的系統還應該有一個User類以及一組用戶可能具有或不具有的權限。

獲取筆和紙,並考慮所有這些對象將如何交互以及他們需要什麼樣的數據庫存儲。

想一想從模型(該系統是如何表示爲對象/存儲在數據庫中)和視圖(如何的各個項目被顯示分離所述控制器(系統如何處理來自用戶的請求)。

將此轉化爲現實,你應該通過一個Controller :: addComment()例程來驗證你的傳入數據,並創建一個新的Comment。Comment構造函數應該包含用於在數據庫中創建對象的SQL語句。