我正在尝试创建一个类似于 facebooks 墙的 PHP 评论系统,但每个帖子只有 1 级回复。
我想要这种格式:
Post 1
Response 1
Response 2
Response 3
Add comment box
----------
Post 2
Response 1
Response 2
Response 3
Add comment box
但是,我目前的代码会产生以下结果:
Post 1
Response 1
Add comment box
Post 1
Response 2
Add comment box
----------------
Post 2
Response 1
Add comment box
---------------
Post 2
Response 1
Add comment box
---------------
我想循环遍历结果,以便每次循环时,帖子消息都不会与与该帖子相关的行中的下一条评论一起打印。所以它应该循环一次主消息,打印它,然后通过循环在下面发布所有相应的评论。
表结构
帖子p_id
=该帖子的编号user_id
=他们发布的用户poster_user_id
= 发帖人post
comment_id
=该评论的数量post_id
=评论相关的帖子编号commenter_user_id
= 发表评论的人comment
代码
$query = "SELECT posts.p_id, comments.post_id, posts.poster_id,
posts.user_id, message, `comments.commenter_user_id, comments.comment`
FROM posts, comments
WHERE posts.p_id = comments.post_id";
$query_run = mysql_query($query) or die(mysql_error());
while ($query_row = mysql_fetch_assoc($query_run)) {
$pid = $query_row['p_id'];
$post_id = $query_row['post_id'];
$poster_id = $query_row['poster_id'];
$user_id= $query_row['user_id'];
$message = $query_row['message'];
$commenter_user_id = $query_row['commenter_user_id'];
$comment = $query_row['comment'];
echo "
<div id=\"post\">
Post $pid $post_id Poster: $poster_id Mentions: $user_id
<br><br> $message <br><br>
<ul class=\"comment\">
$commenter_user_id
<li> $comment </li>
</ul>
<form name=\"message\" method=\"post\" action=\"sendmessage.php\">
<textarea name=\"message\"></textarea> <br>
<input type=\"submit\" value=\"Send\" /></form>
</div>
<br>";
}
关于如何产生预期结果的任何建议?我知道通过改变我的逻辑可能很容易解决这个问题,但我刚刚开始学习。您对此的帮助将不胜感激!
更新
谢谢大家的帮助。我已经合并了您的代码示例的各个方面,并且效果很好。
还有一个问题:
上面提到的每一个都包含一个评论。发表评论后,我希望评论表使用新帖子进行更新。当我发表评论时,如何获取每个特定帖子的 post_id 和 commenter_user_id 变量,以便我可以使用该数据对评论表执行插入查询,如下所示:
INSERT INTO `comments`SET
`post_id` = $post_id
'commenter_user_id = $_SESSION['commenter_user_id'] " (I was thinking sessions?)
我正在考虑通过将变量通过 url 传递到脚本页面来获取数据:
while ($query_row = mysql_fetch_assoc($query_run)){
// more variable definitions
$post_id = $query_row['post_id']
echo " <form method=\"post\" action=\"add_comment.php?post_id='.$post_id.'>
<textarea name=\"comment\"></textarea> <br>
<input type=\"submit\" value=\"Send\" /></form> "
但我尝试将变量传递给其他页面,如下所示:action=\"add_comment.php?post_id='.$post_id.' 但是当我尝试这样做时,我得到了一个未定义的索引:变量。
关于我如何做到这一点的任何想法?