2011-01-05 15 views
0

私はこの間に私の頭脳をしばらく動かしています。データの取得と表示にPHP/MYSQLの問題がある可能性があります

単なる一例である
ID | TYPE | DATA 
1 | TXT | TEST 
2 | PHP | php 
3 | JS | JAVASCRIPT 

は、テーブル全体TXT、PHPとJSのために複数のリストがあります。ここで私は例として、SQLデータベースを持っているデータです。私がしたいのは、すべてのデータを検索し、すべてを別々のドロップダウン/選択ボックスに表示することです。意味、選択ボックス1は、タイプTXTのすべてのデータをリストし、選択ボックス2は、タイプPHPのすべてのデータをリストし、ボックス3は、タイプJSのすべてのデータをリストする。私がこれを行うために来た唯一の方法は、それぞれの異なるタイプに対して個別のSQLクエリを実行することです。私は1つのクエリでそれをすべて行う方法があることを知っているし、私はしたい方法でそれを表示するが、私はちょうどどのように把握することができないと誰かが助けるとき、彼らがした。

答えて

1

唯一の方法は、単に一般的なSELECT * FROM tblを行うことです、そしてあなたは、コード内のグループにそれらをすることができます

$res = mysqli_query('SELECT * FROM tbl'); 

$data = array(); 
while($row = mysql_fetch_assoc($res)) { 
    $type = $row['type']; 
    $data[$type][] = $row; 
} 

// $data contains all of the record, grouped by the TYPE column 

foreach($data as $type => $records) { 
    echo "records for $type: <select>"; 
    foreach($records as $record) { 
     echo "<option value='$id'>$id</option>"; 
    } 
    echo "</select>"; 
} 
+0

私はダミーのように今私はそれをやりたいと正確にどのようにhaha thats感じる!ありがとう! – envoys

0

あなたが一種の "TYPE BY ORDER" をグループ化することが可能です。

SELECT id, data 
FROM table 
ORDER BY type; 

次に、データ出力ループで使用すると、現在の形を追跡し、一度別の選択ボックスを構築することができますが変更タイプ:

$currentType = "no type"; 
while($row = mysql_fetch_assoc($res)) { 
    if ($currentType != $row['type']) { 
     $currentType = $row['type']; 
     // start new select box here 
    } 
    // do some other work here 
} 

ところで、そのようなアプローチは、種類のハックのように見えます:)

0

PHPを使用してすべてのレコードを取得し、ループします。あまりにも多くのメモリを使用しないようにレコードセットが膨大になる場合は、イテレータを使用します。

$lists = array(); 

foreach($recordset as $record) { 
    $lists[$record['type']][$record['id']] = $record['data']; 
} 

すべてのデータを含む配列があることをご存じですか。 1つのクエリ内のすべてのデータを取得するために私の知っている

0

ジャストタイプでそれを注文します結果に "foreach"を使用してループを作成し、タイプがpreivousと異なる場合にselectボックスを変更します。

このようにして、アレイ全体に1回のみループします。

関連する問題