За последние 24 часа нас посетили 15167 программистов и 1679 роботов. Сейчас ищут 870 программистов ...

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

Тема в разделе "PHP и базы данных", создана пользователем Sabirus, 3 ноя 2014.

  1. Sabirus

    Sabirus Новичок

    С нами с:
    31 окт 2014
    Сообщения:
    13
    Симпатии:
    0
    Всем привет! у меня есть в базе две связанные таблицы (таб1-родительские элементы, а дис-дочерные элементы). Надо их извлечь от туда в древовидной структуре(типа хмл). Но, у меня почему то все дочерные элементы входят под первый элемент и условие не работает. Что мне делать подскажите пожалуйста!
     
  2. metadon

    metadon Активный пользователь

    С нами с:
    6 фев 2006
    Сообщения:
    779
    Симпатии:
    0
    Покажи таблицу, данные, код и какой результат получить нужно
     
  3. Sabirus

    Sabirus Новичок

    С нами с:
    31 окт 2014
    Сообщения:
    13
    Симпатии:
    0
    в Личку отправил
     
  4. Sabirus

    Sabirus Новичок

    С нами с:
    31 окт 2014
    Сообщения:
    13
    Симпатии:
    0
    <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);
    }
    }}