0

すべてのデータを取得する必要があるテーブルがありますが、ドロップダウン リストに「タイプ」列を表示する必要があります。現在、私のテーブルには、緑が 2 つ、赤が 1 つ、白が 3 つあります。

id  type_id     type        info1                   info2
1   1           green       some important data     some important data
2   1           green       some important data     some important data
3   2           red         some important data     some important data
4   3           white       some important data     some important data
5   3           white       some important data     some important data
6   3           white       some important data     some important data

これをこのようにphpに表示したかったのです(コードが不完全であっても心配しないでください、私はそれを手に入れました:D)、

<select>
 <?php
 foreach($result as $r):
 echo '<option>'. $r['type'] . '</option>';
 endforeach;

?>
</select>

これの問題は、すべてのデータを列 (タイプ) に表示することです。type_id ごとに 1 つ表示する必要があります。そのタイプで必要な情報が表示されないため、GROUP BY を使用できません。どうすればこれを達成できますか?ありがとう!

4

3 に答える 3

1

あなたのケースでタイプのリストを取得する正しい方法:

SELECT DISTINCT type FROM table;

MySQL SELECT の詳細をお読みください

于 2012-08-19T12:06:40.930 に答える
0

まず、選択クエリを使用してテーブルからすべてのデータを取得する必要があります。クエリの結果セットを処理している間、タイプ フィールドのすべての値を配列に格納し、array_unique 関数をタイプ値を含む配列に適用し、結果の一意の配列に foreach ループを使用して入力する必要があります。個別の型の値を含むドロップダウン リスト。このソリューションにより、2 番目のクエリを使用する必要がなくなり、テーブルに格納されているすべての必要なデータにアクセスできるようになります。

于 2012-08-19T14:49:47.500 に答える
0

2 番目のクエリを実行したくない場合:

<select>
    <?php
        $type=array();
        foreach($result as $r):
            $type[$r['type']] = '<option>'. $r['type'] . '</option>';
        endforeach;
        echo implode("", $type);
    ?>
</select>

2 番目のクエリを実行しても問題ない場合は、Alex Belyaev の回答をお読みください。

于 2012-08-19T12:15:54.103 に答える