我有一个允许用户评论答案的页面,非常类似于stackoverflow。一切工作,除了writcomment .php,理想情况下应该得到questionid和answid,并在正确的问题和正确的答案下放置适当的评论。我目前的writcomment .php代码是错误的,但我真的不知道如何使它正常工作。
Jquery:<script type='text/javascript'>
$('document').ready(function () {
$('.commentContainer').load('../writecomment.php');
$("form").on("submit", function (e) {
e.preventDefault();
var $form = $(this);
$.ajax({
"url": $form.attr("action"),
"data": $form.serialize(),
"type": $form.attr("method"),
success: function () {
$('.commentContainer').load('../writecomment.php');
$('.commentBox').val("");
}
});
});
});
</script>
HTML: <div class='answerContainer' >
<p name='singleAnswer'>$answer[$f]</p>
<div class='commentContainer'></div>
<form method='POST' action='../comment.php'>
<input type='hidden' name='record_id' value='$answerid[$f]' />
<input type='hidden' name='question_id' value='$q' />
<textarea class='commentBox' wrap='soft' name='comment'></textarea>
<input type='submit' value='comment' class='submitCommentBox'>
</form>
</div>
writecomment.php:
<?php
include 'connect.php';
$questionid=
$answerid=
$query4=mysql_query("SELECT * FROM comments WHERE questionid='$q' AND answerid='$answerid'");
while ($row=mysql_fetch_assoc($query4)){
$comment=$row['comment'];
$user=$row['user'];
$time=$row['time'];
echo "<div id='singleComment'><b>$user</b>$comment</div>";
}
?>
我认为真正的问题不是在代码中,而是在算法中:你需要决定:你是否会在注释中使用树,之后计划DB,只有在那之后你应该坐下来写代码。
如果在注释中不使用树,则使用2个表:1)问题2)答案
ID, USER_ID, QUESTION_TEXT
ID, QUESTION_ID, USER_ID, ANSWER_TEXT
当你需要按问题列出所有答案时,使用
SELECT USER_ID, ANSWER_TEXT FROM `Answers` WHERE QUESTION_ID = 123;
当您需要添加注释时,只需将其插入填充了QUESTION_ID字段的Answers
表
如果你想在注释中使用tree,你只需要一个表
<<p> 条目/strong>ID, PARENT_ID, USER_ID, MESSAGE_TEXT
所有的问题将有0值字段PARENT_ID,因为他们是顶部的评论分支,所有的答案将有PARENT_ID=ID(问题),所有的评论答案将有PARENT_ID=ID(答案)。例如
ID | PARENT_ID | MESSAGE_TEXT
1 | 0 | How to make world better?
2 | 1 | Just try to smile
3 | 1 | Try to get a pet!
4 | 3 | I have a fish, that's boring!
看起来像这样:
How to make world better?
Just try to smile
Try to get a pet!
I have a fish, that's boring!
我希望我的答案对你有用,你将留下$answerid;)
变化
var $form = $(this);
var myForm = $(this);
和每个$form
到myForm
;
$.ajax({
"url": $form.attr("action"),
"data": $form.serialize(),
"type": $form.attr("method"),
$.ajax({
url: $form.attr("action"),
data: $form.serialize(),
type: $form.attr("method"),
将PHP更改为
include 'connect.php';
$questionid = (int) $_GET['question_id'];
$answerid = (int) $_GET['record_id'];
$query = mysql_query("SELECT * FROM comments WHERE questionid='$q' AND answerid='$answerid'");
while ($row=mysql_fetch_assoc($query)){
$comment=$row['comment'];
$user=$row['user'];
$time=$row['time'];
echo "<div id='singleComment'><b>$user</b>$comment</div>";
}