2010-12-02 11 views
1

私はリストする方法を把握しようとしているレイアウトは次のようになり、同社のCATEGORYさんとBRANDさん、:PHP MySQLは、共通のフィールドでグループ化された複数の行を表示

COMPANY 1

  • カテゴリー1:
    BRAND X
    BRAND Y
    ブランドZ

  • カテゴリー2
    BRAND
    ブランドB
    BRAND C

  • CATEGORY 3
    BRAND
    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

! – 3r1c

答えて

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

0

だけ

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

$resultsの線に沿って何かが

のようなデータ構造を含むことになり、すべてを取得し、PHPでハッシュに入れ

try var_dump($results)これをさらに理解してください編集してくれてありがとう@ajreal

+0

情報ありがとうございます。 – 3r1c

関連する問題