2012-06-03 33 views
0

我有一個表,基本上它像按類別查詢結果和顯示的一切,列表

------------------ 
id | name | type 
------------------ 
1 | name1 | type1 
2 | name2 | type2 
3 | name3 | type3 
------------------ 

我想查詢它,它顯示成類似

type1 
- name1 
- and so on... 
type2 
- name2 
- and so on...  
type3 
- name 3 
- and so on... 

我也希望將其顯示爲JSON文件,它類似於

[ 
    { 
     "type1": { 
      "name": "name1" 
     }, 
     "type2": { 
      "name": "name2" 
     }, 
     "type3": { 
      "name": "name3" 
     } 
    } 
] 

所以,我可以知道最好的如何做到這一點? 使用循環查詢類型,然後選擇類別並按類型顯示它?

編輯: 在互聯網上搜索高低。我發現這個:http://www.tommylacroix.com/2008/09/10/php-design-pattern-building-a-tree/

因此,制定了這個代碼爲我的需要。不知道是否是有效的:

<?php 
$query = "SELECT * FROM TABLE"; 
$list = array(); 
$result = mysql_query($query); 
while($row = mysql_fetch_array($result)){ 
    if(!$list[$row['type']]) 
    { 
     $list[$row['type']] = array(); 
    } 
    array_push($list[$location['type']],&$row['name']) ; 
} 
?> 
+0

在JSON,如果什麼有多個相同類型的名稱?該類型將如何被序列化?這是無效的對象有多個成員具有相同的名稱'名稱... ... – eggyal

+0

@steveOhh檢查我的答案,下面我希望它會爲你工作..... –

回答

4

試試這個....也看到了結果輸出下面

SELECT id,CONCAT_WS(',',type,name) as result FROM table GROUP BY id 

<?php 
$sql= mysql_query("SELECT id,CONCAT_WS(',',type,name) as result FROM table GROUP BY id"); 
$data = array(); 
$i=0; 
while($row = mysql_fetch_array($sql)){ 

    $ex_res = explode(",",$row['result']); 
    $data[$ex_res[0]]['name'] = $ex_res[1]; 
    $i++; 
} 

$a = json_encode($data); 
print_r($a); 
?> 

結果輸出

{"type1":{"name":"name1"},"type2":{"name":"name2"},"type3":{"name":"name3"}} 
+0

感謝您的迴應。但你認爲 http://stackoverflow.com/questions/5905917/listing-items-by-category-in-php 更好?只是想了解可用和最佳選擇。 :d – steve0hh