首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自数据库的分组结果

来自数据库的分组结果
EN

Stack Overflow用户
提问于 2016-04-19 18:36:32
回答 2查看 32关注 0票数 0

我正在尝试显示基于id的类别结果,我从数据库中获取信息,但它再次创建了一个类别标题。

例如:

标题类别演示cat 1 专题1“禁止酷刑公约”第1条 标题类别演示cat 1 专题2“禁止酷刑公约”第1条 标题类别演示cat 2 专题3“禁止酷刑公约”第二届会议

当它应该显示:

标题类别演示cat 1 专题1“禁止酷刑公约”第1条 专题2“禁止酷刑公约”第1条 标题类别演示cat 2 专题3“禁止酷刑公约”第二届会议

代码语言:javascript
复制
<table class="table table-bordered table-hover">
    <?php

$sql = "SELECT * FROM forums, forum_categories WHERE forum_categories.cat_id = forums.cat_id ORDER BY forum_categories.cat_id";
$result = query($sql);

while (($row = mysqli_fetch_assoc($result)) != false) {
         
    $cat_id = $row['cat_id'];    
    $cat_title = $row['cat_title'];
    
    echo "<thead>";
             echo "<tr>";
                 echo "<th colspan='4'>$cat_title</th>";
            "</tr>";
         echo "</thead>";
         echo "<tbody>";
                      
  
    $forums_cat_id = $row['cat_id'];
    $forum_name = $row['forum_name']; 
    $forum_desc = $row['forum_desc'];
    $forum_last_post_id = $row['forum_last_post_id'];
    
    echo "<tr>";
    
    echo "<td>$forums_cat_id</td>";
    echo "<td>$forum_name<br>$forum_desc<br>Admin</td>";
    echo "<td>0</td>";
    echo "<td>0</td>";  
    echo "</tr>";
}

?>   
    </tbody>
</table>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-19 18:46:33

您正在打印每个结果的标题,MySQL为每一行返回。因此,无论何时发现“新”类别,您都不会做出区分。通过创建一个像数组一样的临时变量,可以很简单地做到这一点。例如:

代码语言:javascript
复制
$displayedCategories = array();

while (($row = mysqli_fetch_assoc($result)) != false) {
    if (!in_array($row['cat_id'], $displayedCategories)) {
        // This is a new category, display it and save it in $displayedCategories
        $displayedCategories[] = $row['cat_id'];
        echo "<thead>";
        echo "<tr>";
        echo "<th colspan='4'>$cat_title</th>";
        echo "</tr>";
        echo "</thead>";
    }

    // Do the other stuff here...
}

这样,任何未遇到的“新”类别都会被打印一次,并将类别id保存到$displayedCategories数组中。如果再次遇到相同的类别,则不会再次输出标头。

票数 0
EN

Stack Overflow用户

发布于 2016-04-19 18:45:30

代码语言:javascript
复制
<table class="table table-bordered table-hover"><tbody>
    <?php

    $sql = "SELECT * FROM forums, forum_categories WHERE forum_categories.cat_id = forums.cat_id ORDER BY forum_categories.cat_id";
    $result = query($sql);
    $cur_cat = '';
    while (($row = mysqli_fetch_assoc($result)) != false) {

        $cat_id = $row['cat_id'];    
        $cat_title = $row['cat_title'];

        if($cat_title != $cur_cat) {
            echo "<thead>";
                 echo "<tr>";
                     echo "<th colspan='4'>$cat_title</th>";
                "</tr>";
            echo "</thead>";
            $cur_cat = $cat_title;
         }


        $forums_cat_id = $row['cat_id'];
        $forum_name = $row['forum_name']; 
        $forum_desc = $row['forum_desc'];
        $forum_last_post_id = $row['forum_last_post_id'];

        echo "<tr>";

        echo "<td>$forums_cat_id</td>";
        echo "<td>$forum_name<br>$forum_desc<br>Admin</td>";
        echo "<td>0</td>";
        echo "<td>0</td>";  
        echo "</tr>";
    }

    ?>
</tbody></table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36726744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档