我想做的是将每条评论的回复添加到我的评论系统中,但我不知道该怎么做——有人可以向我展示或解释如何添加。
这是我的评论数据库表。
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");
}
我该如何添加此项?
这不是一个完整的答案,而是一些提示和技巧。
据推测,你的电影是关于电影的文章,与电影这样具体的东西相比,考虑附加在更通用的对象上的评论可能会有所帮助。
首先,如果你开始把评论和文章看作对象,这将有很大帮助,所以你需要一个Comment类和一个Article类。如果你做得好,你可以创建一个CommentView和ArticleView类,它将有效地作为下面所示模型的View类。
Comment类将需要一个add和remove方法,以及其他一些方法。与文章类似。
您的系统还应该有一个User类,以及一组用户可能拥有或不拥有的权限。
拿一支笔和纸,思考所有这些对象将如何交互,以及它们在数据库存储方面需要什么。
考虑将控制器(系统如何处理来自用户的请求)与模型(系统如何表示为对象/存储在数据库中)和视图(各种项目如何显示)分离
为了将其转化为现实,您应该拥有一个Controller::addComment()例程,该例程可以验证传入的数据,并创建一个新的Comment。Comment构造函数应包含用于在数据库中创建对象的SQL。