Печать дерева городов
Пример формирует дерево городов на PHP. Данный пример позволяет на PHP сформировать список стран, областей, городов в виде дерева
$sql = 'SELECT country.id AS country_id,
country.name AS country_name,
city.id AS city_id,
city.name AS city_name,
area.name AS region_name,
area.id as region_id
FROM `pb_country` AS country
LEFT JOIN `pb_area` AS area ON area.country=country.id
LEFT JOIN `pb_city` AS city ON area.id=city.area
WHERE country.id in ("UA","BY") LIMIT 1000';
// уберите последнюю строчку в предыдущем запросе для вывода всех городов во всех странах
// подключаемся к базе данных
$connection = mysql_connect( 'localhost', 'root', '' );
mysql_select_db( 'world', $connection );
mysql_set_charset( 'utf8' );
$query = mysql_query( $sql, $connection );
$data = []; // формируем массив
while ( $row = mysql_fetch_assoc( $query ) ) {
$data[$row['country_id']][$row['country_name']][$row['region_name']][$row['city_id']] = $row['city_name'];
}
// начинаем выводить полученную структуру
$data = [];
if($query){
while ( $row = mysql_fetch_assoc( $query ) ) {
$data[$row['country_id']][$row['country_name']][$row['region_name']][$row['city_id']] = $row['city_name'];
}
echo '<ul>';
foreach ( $data as $country_id=>$country ) {
echo '<li>';
foreach ( $country as $country_name => $region ) {
echo '<b>'.$country_name.'</b><ul>';
foreach ( $region as $region_name => $city ) {
echo '<li>', $region_name, '<ul>';
$max=10;
foreach ( $city as $city_id=>$city_name ) {
echo '<li><a href="/geo/country/'.$country_id.'/city/'.$city_id.'">'. $city_name. '</a></li>';
if($max--<1){echo '<li> и другие...</li>';break;}
}
echo '</ul></li>';
}
echo '</ul></li>';
}
echo '</li>';
}
echo '</ul>';
}
Результат выполнения данного скрипта:
- Беларусь
- Гродненская область
- Брестская область
- Минская область
- Витебская область
Базу данных можно взять здесь
.
Прокомментировать/Отблагодарить