显示六个最新的PhpBB帖子,而不是六个最新帖子

时间:2014-09-10 23:01:29

标签: php forum phpbb

尝试显示我的PhpBB安装中的六个最新帖子。我对它的工作方式感到满意,但它显示了相同(最近)帖子的六个副本,而不是大小独特的最新帖子。

为了确认,我在论坛上总共有7个帖子。

<?php

$con = mysqli_connect("localhost", "dbuser", "dbpass", "dbname");

$users = mysqli_query($con, "SELECT * FROM phpbb_user_group WHERE group_id='8'");
while($row = mysqli_fetch_array($users)) {
        $developers[] = $row["user_id"];
}

$post = mysqli_query($con, "SELECT * FROM phpbb_posts");
while($row = mysqli_fetch_array($post)) {
        $topic_id = $row["topic_id"];
        $forum_id = $row["forum_id"];
        $post_id = $row["post_id"];
        $post_text = $row["post_text"];
        $post_time = $row["post_time"];
}

$username = mysqli_query($con, "SELECT * FROM phpbb_users WHERE user_id='2'");
while($row = mysqli_fetch_array($username)) {
        $postauthor = $row["username"];


if (strlen($post_text) > 10)   
    $post_text = wordwrap($post_text, 120);
    $post_text = explode("\n", $post_text);
    $post_text = $post_text[0] . '...';

$result = mysqli_query($con, "SELECT * FROM phpbb_posts WHERE poster_id='2' LIMIT 6");
while($row = mysqli_fetch_array($result)) {
        $content = '<div onclick="location.href=\'http://test.mythros.net/forum/viewtopic.php?f=' . $forum_id .     '&amp;p=' . $topic_id . '#p' . $post_id . '\';" class="forum-latest-box">';
        $content .=     '<div class="forum-latest-userbar">';
        $content .=                     '<div class="forum-latest-avatar">';
        $content .=                              '<img src="https://minotar.net/helm/' . $postauthor . '/40.png">';
        $content .=                      '</div>';
        $content .=                      '<h1>' . $postauthor . '</h1>';
        $content .=              '</div>';
        $content .=              '<div class="forum-latest-content">';
        $content .=                      '<div class="forum-latest-text">';
        $content .=                              '"' . $post_text . '"';
        $content .=                      '</div>';
        $content .=                      '<div class="forum-latest-meta">';
        $content .=                              gmdate("F j, Y, g:i a", $post_time);
        $content .=                      '</div>';
        $content .=              '</div>';
        $content .=     '</div>';
        echo $content;
}

?>

1 个答案:

答案 0 :(得分:1)

您可以使用单个循环并使用phpbb_posts表和phpbb_users表的组合查询同时获取您的发布数据和用户信息来解决此问题:

## Line break added to the query for legibility
$result = mysqli_query($con,
"SELECT
    p.post_id AS post_id,
    p.topic_id AS topic_id,
    p.forum_id AS forum_id,
    p.post_time AS post_time, 
    p.post_subject AS subject,
    p.post_text AS post_text
    IFNULL(m.username, 'Guest') AS username,
    FROM phpbb_posts AS p
    LEFT JOIN phpbb_users AS m ON (m.user_id = p.poster_id)
    ORDER BY phpbb_posts.post_time DESC LIMIT 6");

while($row = mysqli_fetch_array($result)) {
# $row now contains the post information and the user info, so you can grab all your data,
# process the post text, and print it out at the same time.
    $post_text = $row["post_text"];
    # do your text transformation
    if (strlen($post_text) > 10)
    ... (etc.)
    # now set up your content
    $content = '<div onclick="location.href=\'http://test.mythros.net/forum/viewtopic.php?f=' . $row["forum_id"] .'&amp;p=' . $row["topic_id"] . '#p' . $row["post_id"] . '\';" class="forum-latest-box">';
    ... (etc.)

}