使用PHP MySQL JOINS在论坛类别中显示最新主题

时间:2017-07-05 14:56:13

标签: php mysql

我目前正在我的网站上创建一个论坛部分,我有一个类别页面,可以在表格中显示您可以发布的不同类别。该表的一列是"最近的主题"柱。该表由while循环组成,遍历我的类别数据库表中的每个类别。我的问题是,while循环不断输出每个主题,只是重用它已经显示的类别。 这是代码:     

$sql = "SELECT categories.cat_id, categories.cat_name, categories.cat_description, topics.topic_id, topics.topic_subject, topics.topic_date, topics.topic_cat FROM categories LEFT JOIN topics ON topics.topic_cat = categories.cat_id";
$query = $DB_con->prepare($sql);
$query->execute();

if (!$query) {
    echo 'No categories found.';
} else {
    echo '<table class="table">
        <tr>
            <th>Category</th>
            <th>Last Topic</th>
        </tr>';

    while($catRow = $query->fetch(PDO::FETCH_ASSOC)) {
        echo '<tr>';
            echo '<td>';
                echo '<h3><a href="category.php?id=' . $catRow['cat_id'] . '">' . $catRow['cat_name'] . '</a></h3>' . $catRow['cat_description'];
            echo '</td>';
            echo '<td>';                
                echo '<a href="topic.php?id=' . $catRow['topic_id'] . '">' . $catRow['topic_subject'] . '</a> on ' . substr($catRow['topic_date'],0,-8);
            echo '</td>';
        echo '</tr>';
    }
    echo '</table>';

}
?>

正如我之前所说,该表会多次显示相同的类别,以便它可以显示已发布的每个主题。我只希望每个类别在该类别中显示最新主题一次。

我希望有人可以帮助我。如果不够清楚,请告诉我。感谢。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,也许你应该改变你的疑问:

更新:

SELECT categories.cat_id
    ,categories.cat_name
    ,categories.cat_description
        ,topics.topic_id
        ,topics.topic_subject
    ,T1.topic_date
    ,T1.topic_cat
FROM categories
LEFT JOIN (SELECT  topic_cat, MAX(topic_date) AS topic_date 
           FROM topics 
           GROUP BY topic_cat) AS T1 ON T1.topic_cat = categories.cat_id
LEFT JOIN topics ON T1.topic_cat = topics.topic_cat AND T1.topic_date=topics.topic_date