快速问题,我认为对于像我一样拥有最基本的 PHP/MySQL 知识的人来说,这是一个非常简单的解决方案。
我有一个存储在数据库中的各个州的城市列表,其中包含城市、州和一些其他变量。现在,它们被提取为按城市名称排序的列表:
- 阿拉斯加安克雷奇
- 马里兰州巴尔的摩
- 伊利诺伊州芝加哥
等等等等
我希望能够首先按州进行分组,然后列出具有该州值的所有城市。所以它看起来像:
AK
CA
我知道我需要做某种 foreach 并在网上搜索过,但还没有找到可以开始工作的示例。
这是我必须提取的基本列表:
$list = mysql_query("SELECT id, alphaname, state FROM regional ORDER BY alphaname",$db);
while ($thearray = mysql_fetch_array($list)) {
echo "<li><a href='info.html?id=$thearray[id]'>$thearray[alphaname], $thearray[state]</a></li>";
}
我知道如何做到这一点的唯一真正方法是对每个状态运行查询,这将是痛苦且完全愚蠢的......
谢谢你的帮助!
Update- 解决了。我采用了 rockacola 的方法,尽管 i-g 也有效。
尝试这个..
查询所有有州的城市,先按州排序,再按城市排序:
SELECT id, alphaname, state
FROM regional
ORDER BY state ASC, alphaname ASC
将数据集组织成二维数组:
$states = array();
while($thearray = mysql_fetch_array($list))
{
$states[$thearray[state]][$thearray[id]] = $thearray[alphaname];
}
现在您的内容$states
应该看起来像:
Array
(
[AK] => Array (
[id_1] = Anchorage
[id_2] = Juneau
)
[CA] => Array (
[id_3] = Los Angeles
[id_4] = San Diego
[id_5] = San Francisco
)
)
生成 HTML 演示文稿:
注意:添加锚点以反映提出的问题。
foreach($states as $state_name => $cities)
{
echo '<h3>'.$state_name.'</h3>';
echo '<ul>';
foreach($cities as $id => $city_name)
{
echo '<li><a href="info.html?id='.$id.'">'.$city_name.'</a></li>';
}
echo '</ul>';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)