选择所有类别和最后5个帖子的每个类别

时间:2016-09-21 07:21:01

标签: php sql

我有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。

3 个答案:

答案 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>';    

     }

    ?>