我有2个表一个类别和一个帖子。如何选择所有类别,并从每个类别中发布最后5个帖子。
到目前为止我有这个代码
include("includes/connect.php");
$get_cats = "select * from categories";
$run_cats = mysqli_query($con,$get_cats);
while ($cats_row=mysqli_fetch_array($run_cats)) {
$cat_id=$cats_row['cat_id'];
$cat_title=$cats_row['cat_title'];
echo '<div class="col-md-4 col-sm-6 col-xs-12">';
echo '<ul class="list-group ">';
echo '<li class="list-group-item table-header"><strong>';
echo $cat_title;
echo '</strong><span class="badge badge-color">12</span></li>';
echo '</ul>';
echo '</div>';
}
表类别的结构
cat_id cat_title
1 sports
2 news
3 bla
4 bla
在帖子中我有一个categ_id。
答案 0 :(得分:0)
您正在寻找要与两个表中的cat_id一起使用的SQL join method。您可以更改SQL查询以获得5个结果,或者您可以在PHP中为每个类别创建一个计数器,如果您已经有5个,则跳过其余部分。当然,您需要考虑那里有多少数据。如果你有大数据库,最好用SQL来解决它。
答案 1 :(得分:0)
您可以在上面的while循环中运行第二个查询以获取类别发布数据
while ($cats_row=mysqli_fetch_array($run_cats)) {
$cat_id=$cats_row['cat_id'];
$sql2="select * from post where cat_id=".$cat_id." order by id desc limit 5";
$second2=mysql_query($sql2);
while (post_row=mysqli_fetch_array($second2)) {
// do your stufff
}
}
答案 2 :(得分:0)
我编辑了一个小问题,但这是最终代码:
<?php
include("includes/connect.php");
$get_cats = "SELECT * from categories";
$run_cats = mysqli_query($con,$get_cats);
while ($cats_row=mysqli_fetch_array($run_cats)) {
$cat_id=$cats_row['cat_id'];
$cat_title=$cats_row['cat_title'];
echo '<div class="col-md-4 col-sm-6 col-xs-12">';
echo '<ul class="list-group ">';
echo '<li class="list-group-item table-header"><strong>';
echo $cat_title;
echo '</strong><span class="badge badge-color">12</span></li>';
$sql2="SELECT * from posts_req where categ_id='$cat_id' ORDER BY post_id desc limit 5";
$second2=mysqli_query($con,$sql2);
if (!$second2) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
while ($post_row=mysqli_fetch_array($second2)) {
echo '<a href="#" class="list-group-item border-none fonts">'.$post_row['post_title'].'</a>';
}
echo '</ul>';
echo '</div>';
}
?>