繁体   English   中英

如何使用PHP和MySql按类别对帖子进行分组?

[英]How to group posts by category using PHP & MySql?

我尝试在查询中使用GROUP BY,但是每个类别仅返回一篇文章。 这是当前设置返回的示例。 我需要将所有具有相同类别的帖子归为一组,有人可以向我指出正确的方向吗? 谢谢你的时间。

就像夏洛特(Charlotte)所建议的那样,您可以将帖子分类为一个关联数组,并以类别作为关键字。

<?php

// Connecting to database

$categories = array(); // Create an empty array
while ($post = mysqli_fetch_array($result)) {
    if(!array_key_exists($post['category'], $categories)) { // Check if the category is already present
        $categories[$post['category']] = array(); // Create an array indexed with the category name
    }
    $categories[$post['category']][] = $post; // Add the post to the category
}
?>

现在,您必须迭代两次:显示类别并显示类别中的每个帖子。 当我必须处理嵌套的foreach以呈现html时,最好使用内联foreach

帖子的呈现应如下所示:

<?php foreach ($categories as $category => $posts) : ?>
    <h2><?php echo $category; ?></h2>
    <?php foreach ($posts as $post) : ?>
        <a href='article.php?id=<?php echo $post['post_id']; ?>' ><?php echo $post['title']; ?></a>
        <p>Posted on <?php echo date('d-m-y h:i:s',strtotime( $post['posted'] ) );?> In <a href='category5.php?id=<?php echo $post['category_id']; ?>' ><?php echo $post['category']; ?></a>
        </p>
    <?php endforeach; ?>
    <hr/>
<?php endforeach; ?>

编辑:我在第一段代码中省略了开始和结束php标签。 如果您在php文件中汇编了两个代码块,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM