添加对评论系统的回复

时间:2013-11-28 19:48:44

标签: php mysql

我要做的是在评论系统中添加对每条评论的回复,但我不知道如何去做,有人可以向我展示或向我解释如何添加此评论。

这是我的评论数据库表。

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");
}

如何添加此内容?

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,而是一些提示和提示。

据推测,你的电影是关于电影的文章,它可能有助于将评论附加到更通用的对象上,而不是像电影那样具体。

首先,如果您开始将注释和文章视为对象,那将极大地帮助您,因此您需要一个Comment类和一个Article类。如果你很好,你可以创建一个CommentView和ArticleView类,它将有效地成为下面所示模型的View类。

您的评论类需要添加和删除方法,以及其他一些方法。与文章类似。

您的系统还应具有User类,以及用户可能拥有或不拥有的一组权限。

获取笔和纸,并考虑所有这些对象将如何进行交互以及它们在数据库存储方面需要什么。

考虑将Controller(系统如何处理来自用户的请求)与模型分离(系统如何表示为对象/存储在数据库中)和View(各种项目的显示方式。

将此转换为现实,您应该通过一切Controller :: addComment()例程来验证您的传入数据,并创建一个新的Comment。 Comment构造函数应包含用于在数据库中创建对象的SQL。