Добрый день! Есть три таблицы, содержащие адреса абонентов. Из них меня интересуют УЛИЦА, ДОМ, КВАРТИРА. Мне нужно создать xml-файл содержащий только уникальные названия улиц, в каждой из которых уникальные номера домов, в каждом из которых уникальные номера квартир.
Осложняется все это тем, что xml-файл формируется на весь город, а в базе данных для города может быть несколько таблиц, соответственно нужно сделать несколько выборок (по одной на таблицу) и полученные данные объединить.
Код скрипта, для выполнения этого ниже.
XML формируется, но почему то, для некоторых домов (в основном в последних улицах), добавляются теги с квартирами, которых нет(с 1 по 179), хотя в этом доме по сути квартира одна(частный дом).
От куда берутся эти квартиры???Где искать ошибку?
Заранее спасибо!
Спасибо пользователю Денис
Денис Symfony2, за предложенное решение. Ниже написан исправленный код. Все работает отлично.
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('xdebug.var_display_max_depth', -1);
include '../connect.php';
$tables = array(
"table" => "1",
"table" => "2",
"table" => "3",
);
$array = array();
foreach ($tables as $table) {
$table_query = pg_query($dbconn, "SELECT street, house_number, app_number from $table");
$data = pg_fetch_all ($table_query);
$array = array_merge($array, $data);
}
$output = array();
foreach ($array as $value) {
$output[$value['street']][$value['house_number']][] = $value['app_number'];
}
$dom = new DOMDocument('1.0', 'utf-8');
$dom->formatOutput = true;
// создаем корневой элемент
$root = $dom->createElement('root');
foreach ($output as $key => $street) {
$street_tag = $dom->createElement("street");
$street_tag->formatOutput = true;
$street_tag = $root->appendChild($street_tag);
$street_tag->setAttribute("street", "$key");
$street_tag->appendChild( $dom->createTextNode(''));
foreach ($street as $key => $house) {
$house_tag = $dom->createElement("house");
$house_tag->formatOutput = true;
$house_tag = $street_tag->appendChild($house_tag);
$house_tag->setAttribute("house", "$key");
$house_tag->appendChild( $dom->createTextNode(''));
foreach ($house as $key => $appartment) {
$app_tag = $dom->createElement("appartment");
$app_tag->formatOutput = true;
$app_tag = $house_tag->appendChild($app_tag);
$app_tag->setAttribute("appartment", "$appartment");
$app_tag->appendChild( $dom->createTextNode(''));
}
}
}
$dom->appendChild($root);
// сохраняем результат в строку
$save_xml = $dom->saveXML();
// выводим полученную строку
echo $save_xml;