php从数组打印更多结果并将它们分组

时间:2015-04-06 19:18:32

标签: php mysql

我有一个我无法解决的问题。

让我们说我在mysql中有一个像这样的表:

 id |  name   |  city
 ---|---------|---------
 1  |  En     |  Madrid
 2  |  Nicole |  Paris
 3  |  Robin  |  London
 4  |  Wayne  |  Paris
 5  |  John   |  Madrid
 6  |  Frank  |  Madrid

我想在一个div中列出一个城市的所有名称,我想为所有城市都这样做。

示例:

恩,约翰,弗兰克 妮可,韦恩
罗宾郎

所有这些行都在div中,一个在另一个下面。在这个特殊情况下,结果是3 div。我只管理了每个名字,特别是div,其中6个。我这样做了:

$result = mysql_query("SELECT * FROM table_name");
$count=mysql_num_rows($result);    
$i=0;
for($i=0;$i<=$count-1;$i++)
  {            
    $row=mysql_fetch_array( $result );    
    echo "<div>$row[name]</div>";        
  }  

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

解决方案1 ​​

$result = mysql_query("SELECT * FROM table_name ORDER BY city");
$count=mysql_num_rows($result);

$i=0;
$city = '';
for($i=0;$i<=$count-1;$i++) { 

    $row=mysql_fetch_array( $result );
    if ($city == '' ) {
       echo "<div>";    
    } elseif ($city<>$row['city']) {
       echo "</div><div>";  
    }  
    $city = $row['city']
    echo $row['name'].' &nbsp';
} 

if ($city<>'') echo '</div>';

解决方案2

$result = mysql_query("SELECT GROUP_CONCAT(name) as name_list, city FROM table_name GROUP BY city");
$count=mysql_num_rows($result);
$i=0;
$city = '';
for($i=0;$i<=$count-1;$i++) { 

    $row=mysql_fetch_array( $result );
    echo '<div>'.$row['name_list'].'</div>';
}