制作我自己的留言板和显示与php帖子


Making my own message board and displaying posts with php?

首先看看这个例子,我想让它看起来是什么样子,

登录


电子邮件:aa@aa.aa密码:aaaaaa

进入这个页面http://www.nomomon.com/forums.php?email=aa@aa.aa&v=21828

你看到回复是如何彼此缩进的,这就是我想要的样子,现在我的努力;

首先,我有一切设置和一个工作留言板,只是不显示帖子回复正确,每个帖子有一个父帖子ID等…

这是我的尝试,它适用于第一个回复,但不像给定的例子迭代每个帖子回复与正确的parentID?

while ($post = $q -> fetch(PDO::FETCH_ASSOC)) {
    echo '<p class="spacerTop"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post['postID'] . '">' . $post['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post['posterID'] . '">' . $post['username'] . '</a></p>';
    $q = $dbc -> prepare("SELECT boardposts.*, accounts.username FROM boardposts INNER JOIN accounts WHERE boardposts.posterID = accounts.id AND boardposts.parentID = ?");
    $q -> execute(array($post['postID']));
    while ($post2 = $q -> fetch(PDO::FETCH_ASSOC)) {
          echo '<p class="spacerTop" style="margin: 0 0 0 20px;"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post2['postID'] . '">' . $post2['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post2['posterID'] . '">' . $post2['username'] . '</a></p>';
          $q = $dbc -> prepare("SELECT boardposts.*, accounts.username FROM boardposts INNER JOIN accounts WHERE boardposts.posterID = accounts.id AND boardposts.parentID = ?");
          $q -> execute(array($post2['postID']));
          while ($post3 = $q -> fetch(PDO::FETCH_ASSOC)) {
                echo '<p class="spacerTop" style="margin: 0 0 0 40px;"><a href="http://www.example.com/boards?topic=' . $_GET['topic'] . '&amp;view=' . $post3['postID'] . '">' . $post3['subject'] . '</a> - <a href="http://www.example.com/viewaccount?id=' . $post3['posterID'] . '">' . $post3['username'] . '</a></p>';
          }
    }
}

我的第一个想法是显示每个帖子与父ID,然后另一个while循环为这些回复,最后另一个while循环,但它不工作的方式,我想要的,因为它只显示第一个回复的回复。

首先,您最终将不得不重新考虑该函数(除非您只想显示最多3个响应)。用递归的方式来解决这个问题是很诱人的(因为递归很适合解决这类问题),但是有一种不需要递归的方法也可以做到这一点。无论如何,现在这是出路,为什么它不能正常工作。你的代码似乎是健全的,但你确定SQL查询返回正确的结果?您是否尝试过不使用PHP,仅通过执行查询并查看结果?我也不完全确定是否需要INNER JOIN。

SELECT `postID`, `topic`, `subject`, `posterID`,`username`, `id`
FROM `boardposts`, `account`
WHERE `boardposts`.`posterID` = `accounts`.`id` AND `boardposts`.`parentID` = ?

我不记得了,但是你可能不得不在select子句中使用表名(就像你现在所做的那样),尽管我觉得它们可能是可选的。无论如何,首先要确保您的查询返回正确的结果。