我有一个包含两个字段的SQL表:City和State。我想建立一个简单的所有州和所有城市的清单,但到目前为止还没有。我想要这样的东西:
<ul>
<li>New York
<ul>
<li>Albany</li>
<li>Buffalo</li>
<li>New York City</li>
</ul>
</li>
<li>Illinois
<ul>
<li>Chicago</li>
<li>Rockford</li>
</ul>
</li>
</ul>
我做了以下选择,但它只列出了状态。无法找到显示各个城市的方法:
<?php
$result = mysqli_query($con,"SELECT DISTINCT states,cities FROM table ORDER BY states");
while($row = mysqli_fetch_array($result))
{
// show here
}
?>
答案 0 :(得分:0)
州可能会
$row['states']
城市
$row['cities']
答案 1 :(得分:0)
你正在向阵列中提取州和城市,因此你应该尝试打印它们:
while($row = mysqli_fetch_array($result)){
echo $row['cities']."<br/>";
echo $row['states']."<br/>";
}
但仍然不足以为您提供所需的结果,因为查询不是按州对城市进行分组。但对于php部分,这是你必须要做的。 如果你想帮助sql告诉我:p
答案 2 :(得分:0)
假设返回的每个DB记录包含一个州和一个城市,则一种方法是
SELECT states,cities FROM table ORDER BY states, cities
我不确定你需要DISTINCT,除非你有重复的记录。这应该给出按州和州内分类的结果,按城市排序。
您可以在看到的最后一个状态的循环中跟踪,当它发生变化时,关闭最后一个状态的条目(</ul></li>
)。一定不要在第一个($ previousState =='')上这样做。启动新状态,输出第一个城市,并继续输出城市,直到状态再次发生变化。