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

标签 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 时,我最好使用 inline 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 文件中组装这两个代码块,它应该可以工作。

关于php - 如何使用 PHP 和 MySql 按类别对帖子进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979918/

相关文章:

php - 将 Symfony2 项目从本地主机移动到开发服务器

mysql - 带聚合函数的子查询

MySql查询发送数据慢

PHP 在生成文档时在服务器上创建文档副本

php - 无法将日语字符从 XML 导入 MySQL

php - CSS 和图像不会在页面加载时加载,但会在页面刷新时加载

php - 如何将查询结果一一回显?

php - 在 PHP 中仅去除 <p> 标签

php - 如何找到随机选择的图像的表名

php - Zend 框架中的 Zend_form_element_select onchange