2012-08-08 113 views
0

我在将MySQL结果输出到HTML时遇到问题。我有一个MySQL的结果返回:按列分组MySQL结果

| title  | category_name | from_where | 
--------------------------------------------- 
| Title num 1 | Journal  | iidl_file | 
--------------------------------------------- 
| Title num 2 | Books   | iidl_file | 
--------------------------------------------- 
| Title num 3 | Announcement | iidl_post | 
--------------------------------------------- 
| Title num 4 | News   | iidl_post | 
--------------------------------------------- 

我怎样才能在HTML预览此数据是这样的:

iidl_file 
- Title num 1 (Journal) 
- Title num 2 (Books) 

-------------------------- 

iid_post 
- Title num 3 (Announcement) 
- Title num 4 (News) 
+0

这是一个显示问题,无关mysql本身。 – 2012-08-08 03:50:58

+0

使用%2 == 0来破解数据..在MySQL中使用LIMIT ..choice是你的....给一个尝试兄弟做一些研发,并提供给我们的代码然后:) – swapnesh 2012-08-08 03:52:36

回答

0

这是我会做:

SELECT `title`, `category_name`, `etc` FROM `table_name` ORDER BY `from_where`; 

如果你有许多记录,确保from_where列中有一个索引,您将受益匪浅。

下面是一些伪代码:

$groups = array(); 
foreach ($rows as $row) { 
    $from_where = $row['from_where'] 
    if (! isset($groups[$from_where])) { 
     $groups[$from_where] = array(); 
    } 
    $groups[$from_where][] = $row; 
} 

现在你$groups将包含由from_where列键阵列。

这样做,你实际上不需要必须甚至在查询中发出ORDER BY。

0

只是一个想法,只要使用普通的MySQL结果循环使用这样的代码,而不是测试,但希望这将有助于

$from_all = array(); 
$from_all[$from_where][] = array('title'=>$title,'category_name'=>$category_name) 

然后

foreach($from_all as $from_where=>$array) { 
    echo $from_where 
    foreach($array as $row) { 
     echo $row['title']; 
     echo $row['category_name']; 
    } 
}