2010-12-02 53 views
1

我试图找出如何列出公司类别的,品牌的,在布局将类似于此:PHP MySQL的显示由公共字段分组多行

公司1

  • 类别1:
    BRAND X
    品牌Y
    BRANDž

  • CATEGORY 2
    品牌
    BRAND乙
    C品牌

  • CATEGORY 3
    品牌
    BRAND X

我不够熟悉PHP + MySQL按顺序查找正确的SEARCH和PHP输出 为了达成这个。

我的表看起来与此类似:

 
COMPANY | CATEGORY | BRAND  
-------------------------------- 
Company 1 | Category 2 | Brand A 
Company 1 | Category 2 | Brand B 
Company 1 | Category 2 | Brand C 
Company 1 | Category 1 | Brand X 
Company 1 | Category 1 | Brand Y 
Company 1 | Category 1 | Brand Z 
Company 1 | Category 3 | Brand A 
Company 1 | Category 3 | Brand X 
+0

@ajreal感谢您的编辑! – 3r1c 2010-12-02 20:49:24

回答

5
<?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

+0

这太好了。谢谢。 – 3r1c 2010-12-02 20:44:00

0

就去拿一切,把它放在一个哈希在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)使其更有意义

+0

感谢您的信息。 – 3r1c 2010-12-02 20:47:29