2012-01-17 6 views
1

私はテーブルを持っています製品。mysqlとPHPを使用したselectドロップダウンのカテゴリ

製品:

id Name   category 
1 Sony Bravia TV 
2 Samsung 32 TV 
3 Kenwood  Microwave 
4 Sony PS3  Video Game 
5 Sharp  TV 
... 

私は

-- TV --  
Sony Bravia 
Samsung 32 
Sharp 
-- Microwave -- 
Kenwood 
-- Video Games -- 
Sony PS 3 

私は、単一のクエリとしてMySQLでこれを行うことができますどのような方法があるので選択ドロップダウンにそれらを表示したいのですが?

カテゴリを個別に識別したいので、誰かが製品ではなくカテゴリを選択すると、selectオプションのidが何とかこれを製品ではなくカテゴリとして識別します(そして、誰かが製品を選択すると、それを製品として識別します)。これはまったく可能ですか?

多くのお礼ありがとうございます

答えて

1
$query = "SELECT * 
      FROM Products 
      ORDER BY category, Name"; 
$result = mysql_query($query); 

echo "<select>\n"; 

$thisCat = NULL; 
while ($row = mysql_fetch_assoc($result)) { 
    if ($row['category'] != $thisCat) { 
    echo ' <option value="category:'.htmlspecialchars($row['category']).'">--&nbsp;'.htmlspecialchars($row['category']).'&nbsp;--</option>'; 
    $thisCat = $row['category']; 
    } 
    echo ' <option value="'.$row['id'].'">&nbsp;&nbsp;'.htmlspecialchars($row['Name']).'</option>'; 
} 

echo "</select>"; 

...あなたはおそらくcategoriesのテーブルを持っているとProducts

+0

おかげデイブと皆を行うです – user1038814

0

確かに、カテゴリー別にご注文いただけます。

SELECT * FROM products ORDER BY category ASC 

これは、(ASCは不要ですが、私はただ冗長にするためにそれを含めるのが好き)カテゴリーのアルファベット順にすべての製品を置きます。

幸運。

0

クエリの単純なものからそのテーブルにFKを使用する必要がありますが:

SELECT category, Name 
FROM yourtable 
ORDER BY category, Name 

クライアント側のコードがありますデータを取得/表示しているときに新しいカテゴリに到達したときを検出するための簡単な「状態マシン」を実装することです。

$prev_cat = null; 
while($row = mysql_fetch($results)) { 
    if ($prev_cat <> $row['category']) { 
     echo "<option>---- {$row['category']}----</option>" 
     $prev_cat = $row['category']; 
    } 
    echo "<option>{$row['Name']}</option>"; 
} 
0

まず、クエリであなたのソート順序を適応させるので、結果は

id Name   category 
1 Sony Bravia TV 
2 Samsung 32 TV 
5 Sharp  TV 
3 Kenwood  Microwave 
4 Sony PS3  Video Game 
... 

今すぐ助けた古典的なグループ変更ダンス

$category='__INVALID__'; 
while (true) { 
    $row=mysql_fetch_row($query); 
    if ($row) break; 
    if ($row[2]!=$category) { 
    echo '<option value="'.$row[2].'">---'.$row[2]."---</option>\n"; 
    $category=$row[2]; 
    echo '<option value="'.$row[0].'">'.$row[1]."</option>\n"; 
} 
関連する問題