按类别查询结果并将所有内容显示为列表

时间:2012-06-03 06:29:33

标签: php mysql json

我有一张桌子,基本上就像

------------------
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']) ;
}
?>

1 个答案:

答案 0 :(得分: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"}}