我在我的查询中尝试过使用GROUP BY,但每个类别只返回一个帖子。这是我当前设置返回的示例。我需要的是将所有同类别的帖子组合在一起,有人能指出我正确的方向吗?谢谢你的时间。
答案 0 :(得分:1)
像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文件中组装了两个代码块,它应该可以工作。