【问题标题】:PHP MySQL display multiple rows grouped by common fieldsPHP MySQL显示按常用字段分组的多行
【发布时间】:2010-12-02 17:01:14
【问题描述】:

我试图弄清楚如何列出 COMPANY 的 CATEGORY 和 BRAND 的,其中的布局看起来类似于:

公司 1

  • 类别 1:
    品牌 X
    品牌Y
    Z品牌

  • 类别 2
    品牌 A
    品牌B
    品牌 C

  • 类别 3
    品牌 A
    品牌 X

我对 PHP + MySQL 不够熟悉,无法找到正确的 SEARCH 和 PHP 输出来实现这一点。

我的桌子看起来像这样:

公司 |类别 |品牌 -------------------------------- 公司 1 |类别 2 |品牌A 公司 1 |类别 2 |品牌B 公司 1 |类别 2 |品牌C 公司 1 |第一类 |品牌 X 公司 1 |第一类 |白兰地 公司 1 |第一类 |品牌 Z 公司 1 |类别 3 |品牌A 公司 1 |类别 3 |品牌 X

【问题讨论】:

    标签: php mysql group-by


    【解决方案1】:
    <?php
    $result = mysql_query("
      SELECT
        *
      FROM
        some_table
      ORDER BY
        company,
        category,
        brand
    ") 
    or trigger_error('Query failed in '. __FILE__ .
       ' on line '. __LINE__ .'. '. mysql_error(), E_USER_ERROR);
    if (mysql_num_rows($result)) {
      $companies = array();
      while ($row = mysql_fetch_assoc($result)) {
        $companies[$row['company']][$row['category']][] = $row['brand'];
      }
    
      foreach ($companies AS $company => $categories) {
        echo '<h2>'. htmlentities($company, ENT_COMPAT, 'UTF-8') .'</h2>';
        echo '<ul>';
        foreach ($categories AS $category => $brands) {
          echo '<li>'. htmlentities($category, ENT_COMPAT, 'UTF-8');
          foreach ($brands AS $brand) {
            echo '<br><em>'. htmlentities($brand, ENT_COMPAT, 'UTF-8') .'</em>';
          }
          echo '<br>&nbsp;</li>';
        }
        echo '</ul>';
      }
    }
    

    jsbin

    【讨论】:

      【解决方案2】:

      只需获取所有内容并将其放入 php 中的哈希中,类似于

      $rs = mysql_query("Select * from myTable");
      $results = array();
      while($row = mysql_fetch_assoc($rs)) {
          $results[$row['COMPANY']][$row['CATEGORY']][] = $row['BRAND'];
      }
      

      $results 将包含类似的数据结构

      array(
          'Company 1' => array(
              'Category 1' => array('Brand X', 'Brand Y')
      ... etc
      )
      

      尝试var_dump($results) 让其更有意义

      【讨论】:

        猜你喜欢
        • 2012-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        • 2011-04-08
        相关资源
        最近更新 更多