Home > Article > Backend Development > Detailed explanation of PHP+Mysql no-refresh Q&A comment system
I wrote a comment system source code to share with everyone, including expressions and comment mechanism. The code is simple and easy to understand. Friends who need it can refer to
I wrote a comment system source code to share with everyone. Including expressions and comment mechanism. The username is random
Comment on a certain article
function subcomment() { $data['uid'] = getUserid(); $data['mtype'] = I("post.mtype", 0, 'int'); if ($data['uid'] == '') { echo json_encode(array("code" => -1)); } else { $content = addslashes(str_replace("\n", "<br />", $_POST['content'])); $data['tid'] = I("post.id", 0, 'int'); //文章id if (strlen(preg_replace('/\[ [^\)]+? \]/x', '', $content)) < 10) { echo json_encode(array("code" => "short than 10", "error" => "评论的内容不能少于10个字符。")); exit; } if (C("DB_PWD") != '') { if (time() - session("comment_time") < 60 && session("comment_time") > 0) {//2分钟以后发布 echo json_encode(array("code" => "fast", "error" => "您提交评论的速度太快了,请稍后再发表评论。")); exit; } } $data['pid'] = I("post.pid", 0, 'int'); $data['pid_sub'] = I("post.pid_sub", 0, 'int'); $lyid = $data['pid_sub'] > 0 ? $data['pid_sub'] : $data['pid']; if ($lyid > 0) { $lyinfo = M("comment")->field("uid")->where("id='" . $lyid . "'")->find(); $data['touid'] = $lyinfo['uid']; } else { $data['touid'] = 2; } $data['addtime'] = time(); $emots = getTableFile("emot"); foreach ($emots as $v) { $content = str_replace("[" . $v['name'] . "]", "<img alt='" . $v['name'] . "' src='" . __APP__ . "/Public/emot/" . ($v['id'] - 1) . ".gif'>", $content); } $data['content'] = addslashes($content); $info = M("comment")->field("id")->where("content='" . $data['content'] . "'")->find(); if ($info['id']) { echo json_encode(array("code" => "comment_repeat", "error" => "检测到重复评论,您似乎提交过这条评论了")); exit; } $lastid = M("comment")->add($data); $points_comment = 20; if ($lastid > 0) { $day_start = strtotime(date("Y-m-d")); $day_end = $day_start + 3600 * 24; $comment_num_day = M("comment")->where("uid = " . $data['uid'] . " AND addtime between " . $day_start . " AND " . $day_end . "")->count(); if ($comment_num_day <= 5) { //少于5条每天,则添加积分 // addPoints("comment", $points_comment, $data['uid'], "评论获得" . $points_comment . "积分", 5, 1); } // addMessage('comment', $data['tid'], $data['pid'], $data['mtype'], $data['touid'], $content); } session("comment_time", time()); echo json_encode(array("code" => 200, "comment" => $content, "points" => $points_comment)); } }
Get based on paging parameters Corresponding comment list
function comments() { $id = I("get.id", 0, 'int'); $mtype = I("get.mtype", 1, 'int'); $page = I("get.page", 1, "int"); $totalnum = I("get.totalnum", 1, "int"); $start = 10 * ($page - 1); $sql = "tid = " . $id . " AND pid = 0"; $comments = M("comment")->field("id,uid,content,addtime")->where($sql)->order("id DESC")->limit($start . ",10")->select(); // echo M("comment")->getlastsql(); foreach ($comments as $k => $v) { $comments[$k]['sub'] = M("comment")->field("id,uid,content,pid_sub")->where("tid = " . $id . " AND pid = " . $v['id'] . "")->order("id ASC")->select(); } $this->assign("id", $id); $this->assign("mtype", $mtype); $this->assign("comments", $comments); $this->assign("comments_num", $totalnum - ($page - 1) * 10); $this->display(); }
Switch comment pagination
if ($("#detail-page").length > 0) { var id = $("#detail-page").attr("data-id"); var mtype = $("#detail-page").attr("data-mtype"); var totalnum = $("#detail-page").attr("data-totalnum"); $("#detail-page").children("a").click(function() { var page = parseInt($(this).attr("data-page")); $("#detail-page").children("a").removeClass("current"); $("#detail-page").children("a").eq(page - 1).addClass("current"); $("#comment_list").html("<p style='padding:20px 0;text-align:center;'><img src='" + site_url + "Public/images/loading.gif'></p>"); $.get(getUrl("Box/comments"), { page: page, id: id, totalnum: totalnum, mtype: mtype }, function(data) { $("#comment_list").html(data) }) }) }
The comment form and emoticon form have been placed in the compressed package
CREATE TABLE IF NOT EXISTS `sucai_comment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `touid` int(11) DEFAULT '0', `pid_sub` int(11) DEFAULT '0', `tid` int(11) NOT NULL, `pid` int(11) DEFAULT '0', `mtype` tinyint(1) NOT NULL, `content` text NOT NULL, `addtime` int(10) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5560 ;
The above is the entire content of this article, I hope it will be helpful to everyone Learning helps.
Related recommendations:
php implementationCommentsDetailed explanation of reply and delete function examples
php unlimited levelCommentsDetailed explanation of nesting implementation steps
php unlimited levelCommentsNesting implementation steps Detailed explanation
The above is the detailed content of Detailed explanation of PHP+Mysql no-refresh Q&A comment system. For more information, please follow other related articles on the PHP Chinese website!