Извлечение данных из базы данных!

Sabi

Новичок
Помогите пожалуйста, где я ошибся ? В базе хранятся связанные (по id) две таблицы, надо их извлечь в виде xml файл? В моем случае все дочерние элементы входят под первый элемент, а не как надо. Результат должен быть в виде:
<records>
<record 1>
<kod>1</kod>
<name>nnnn</name>
<type> 2324 </type>
<relation>
<kods>11</kods>
<name>ыпывыпып</name>
<type>d</type>
</relation>
.. до конца дочернего элемента элемента 1
<relation>
<kods>99</kods>
<name>sdgsdgsdd</name>
<type>d</type>
</relation>
</record>

<record 2 >(11 элемент имеет дочерние элементы в таблице 2,)
<kod>11</kod>
<name>dfghhj</name>
<relation>
<kods>1111</kods>
<name>ыпывыпып</name>
<type>d</type>
</relation>
.. до конца дочернего элемента под элемента 11
<relation>
<kods>9999</kods>
<name>sdgsdgsdd</name>
<type>d</type>
</relation>
</record>
</records>

все -record-ы хранятся в первой таблице;
все -relation-ы хранятся во второй таблице;

Теперь проблема в том, что я должна сравнивать все элементы таблицы по id. Я сделала, но кажется здесь у меня ошибка, подскажите пожалуйста:


$query = 'SELECT kod,name FROM tab1 WHERE tab1.id=tab2.id ORDER BY tab1.id ';
$result = pg_query($query) or die('Ошибка запроса: ' . pg_last_error());

$query1 = "SELECT tab2.kods, tab1.name, tab2.type FROM tab2 JOIN tab1 ON tab1.kod=tab2.kods ORDER BY tab2.ide ";
$result1 = pg_query($query1) or die ("Error in query1: $query1. " .
pg_last_error());

header("Content-type: text/xml; charset= UTF-8");
$doc = new DOMDocument("1.0");
// add root node
$root = $doc->createElement("records");
$node = $doc->appendChild($root);
while ($row = pg_fetch_assoc($result)){
$out=$doc->createElement('record');
$out=$root->appendChild($out);
foreach ($row as $fieldname => $fieldvalue)
{
$child = $doc->createElement($fieldname);
$child = $out->appendChild($child);
$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);
}

while ($row = pg_fetch_assoc($result1)){
$inner = $doc->createElement('relation');
$inner = $out->appendChild($inner);
foreach ($row as $fieldname => $fieldvalue) {
$child = $doc->createElement($fieldname);
$child = $inner->appendChild($child);
$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);
}
}}
 

Sabi

Новичок
Да, спасибо, все работает, только элементы не по порядку как надо , где может быть ошибка? а как можно избавиться от повторяющихся элементов? может мне лучше получить данные в виде ассоциативного массива?
 
Сверху