在PHP/MySQL中为列分组相同的行

在PHP/MySQL中为列分组相同的行,php,mysql,Php,Mysql,假设我有一个如下所示的表结构 location|name ------------- NY|john London|neil NY|clair 我使用 SELECT * FROM table HTML视图文件如下所示: <table> <tr><td>location</td><td>name</td> <?php foreach($rows as $row):> <tr>

假设我有一个如下所示的表结构

location|name 
------------- 
NY|john  
London|neil  
NY|clair
我使用

SELECT * FROM table
HTML视图文件如下所示:

<table>  
<tr><td>location</td><td>name</td>  
<?php foreach($rows as $row):>  
<tr><td><?=$row->location></td><td><?=$row->name></td>  
<?php endforeach;>  
</table>
如果我能在纽约和伦敦之间使用交替的颜色,那也太好了


ps:我有太多的事情要分组,简单的解决办法不合适。

举个例子,我会:

SELECT * FROM table ORDER BY location
现在,地点将分组。可以添加更多以逗号分隔的列

接下来,对于PHP:

<?php $lastLocation = 'havenotseenityet'; ?>
<table>  
<tr><td>location</td><td>name</td>  
<?php foreach($rows as $row):>  
    <tr>
    <?php if ($lastLocation != $row->location) {
        $lastLocation = $row->location;
        ?>
    <td><?=$row->location></td><td><?=$row->name></td>
    <?php
    } else {
        ?>
        <td></td><td><?=$row->name></td>  
    } ?>
<?php endforeach;>  
</table>
我们在这里做的是获取行,以便相同的位置彼此相邻并排序-相邻是一个副作用。然后我们跟踪我们看到的最后一个位置,当我们看到一个新的位置时,我们会显示该位置,否则我们会隐藏它直到我们看到一个新的位置。这可以扩展到任意数量的项目,但请记住,如果您按州、城市进行排序,那么当您看到不同的州时,您也必须使城市不可见


最后,请注意,我不是以$lastLocation=null开头的。这是因为null是DB列的有效值,您不想在这一点上出错。

对于您的示例,我会:

SELECT * FROM table ORDER BY location
现在,地点将分组。可以添加更多以逗号分隔的列

接下来,对于PHP:

<?php $lastLocation = 'havenotseenityet'; ?>
<table>  
<tr><td>location</td><td>name</td>  
<?php foreach($rows as $row):>  
    <tr>
    <?php if ($lastLocation != $row->location) {
        $lastLocation = $row->location;
        ?>
    <td><?=$row->location></td><td><?=$row->name></td>
    <?php
    } else {
        ?>
        <td></td><td><?=$row->name></td>  
    } ?>
<?php endforeach;>  
</table>
我们在这里做的是获取行,以便相同的位置彼此相邻并排序-相邻是一个副作用。然后我们跟踪我们看到的最后一个位置,当我们看到一个新的位置时,我们会显示该位置,否则我们会隐藏它直到我们看到一个新的位置。这可以扩展到任意数量的项目,但请记住,如果您按州、城市进行排序,那么当您看到不同的州时,您也必须使城市不可见


最后,请注意,我不是以$lastLocation=null开头的。这是因为null是DB列的有效值,您不想因此而出错。

在查询中尝试使用DISTINCT location

在查询中尝试使用DISTINCT location

如果您想对表行使用具有交替颜色的表,我建议您使用前端框架引导。请阅读更多关于此的信息

有关交替行颜色条纹行的另一个类似问题,以及使用引导的解决方案,请参阅


注意:第一个链接与Bootsrap v.4相关,第二个链接与Bootstrap v.3相关。这两种方法都可以让您了解条带行功能,独立于引导版本。

如果您想使用具有交替颜色的表行,我建议您使用前端框架引导。请阅读更多关于此的信息

有关交替行颜色条纹行的另一个类似问题,以及使用引导的解决方案,请参阅


注意:第一个链接与Bootsrap v.4相关,第二个链接与Bootstrap v.3相关。两者都应该让您了解条带行功能,独立于引导版本。

我不想删除相同位置的行。我想对它们进行分组。我不想删除相同位置的行。我想把他们分组。