[英]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.