我有一个数据库表,其布局如下:
Business Phone City State Country
Baker 12345678 CityName 1 StateName 1 CountryName 1
Mason 91834919 CityName 2 StateName 2 CountryName 1
Welder 58149918 CityName 3 StateName 1 CountryName 1
Painter 48194918 CityName 4 StateName 3 CountryName 2
Chef 95982848 CityName 5 StateName 4 CountryName 3
Vendor 96928248 CityName 1 StateName 1 CountryName 1
我想在这样的html列表中显示这个表:
CountryName 1
- StateName 1
* CityName 1
* Vendor | 9692824
* Baker | 12345678
* CityName 3
* Welder | 58149918
- StateName 2
* CityName 2
* Mason | 91834919
- CountryName 2
- StateName 3
* CityName 4
* Painter | 48194918
- CountryName 3
- StateName 4
* CityName 5
* Chef | 95982848
最后,这个数据库表将非常庞大,随着时间的推移会增加许多业务。我甚至很难想象从哪里开始。
我的问题首先:
我是PHP和mysql的新手,但我很快就把它包围了。我想我只需要一个例子或一些方向让我从这里开始。
如果可能,我是否可以看到将这些值输入到这样的列表中所需的PHP示例?
我问了一个新问题,因为我希望看到一个更直接的例子来说明如何实现这一目标:How can I rewrite my PHP & MySQL to group my HTML list by equal column values?
答案 0 :(得分:1)
实际上很简单。在查询数据库并使用结果集时,只需将数据加载到多维数组中即可。所以像这样:
$final_array = array()
while($row = /* Your DB row fetch logic here */) {
$row_object = new stdClass();
$row_object->business = $row->business;
$row_object->phone = $row->phone;
$final_array[$row->country][$row->state][$row->city] = $row_object;
}
这为您提供了嵌套的对象数组,这些对象可以通过您喜欢的国家/州/城市的任意组合轻松寻址。
现在,您还可以考虑将您的手机/城市/州/国家/地区数据拆分为与业务有1对多关系的单独表格,如果您希望以规范化方式容纳具有多个位置的业务。
获得此数据后,输出到树/列表结构应该非常简单。像
这样的东西foreach ($final_array as $country => $country_data) {
// output $country and start a <ul> whatever you want HTML to look like
foreach($country_data as $state => $state_data) {
// output $state and start another list
foreach($state_data as $city => $city_data) {
// output $city and start another list
foreach($city_data as $business_obj) {
// output $business_obj->business and $business_obj->phone
}
// close city list
}
// close state list
}
// close country list
}
答案 1 :(得分:0)
使用您拥有的表格结构,您可以:
ORDER BY
子句:ORDER BY CountryName, StateName, CityName
;