За последние 24 часа нас посетили 16314 программистов и 1671 робот. Сейчас ищут 779 программистов ...

PHP, DOM, XML

Тема в разделе "PHP для новичков", создана пользователем deadlolman, 14 июн 2016.

  1. deadlolman

    deadlolman Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    23
    Симпатии:
    1
    День добрый. Возник вопрос , как мне сохранить несколько XML файлов. Из бд идет выборка и мне для каждого ID нужен отдельный XML. Что-то у меня не выходит. Может в DOM есть какой метод очистки переменных, он мне добавляет в первый файл нормально ,во 2 добавляет и 1 и 2 и т.д. Очень нужна подсказка. Спасибо.

    PHP:
    1. header ("Content-Type: text/html; charset=UTF-8");
    2. $dbhost = "localhost";
    3. $dbuser = "Admin";
    4. $dbpass = "*********";
    5. $dbname = "admin";
    6. $link = mysql_connect($dbhost, $dbuser, $dbpass) or die('No');
    7. mysql_select_db($dbname);
    8. mysql_query("SET NAMES utf8");
    9. $res = mysql_query(' SELECT  * FROM  `m_el_s_faktura`,`m_docum_s_faktura` WHERE m_el_s_faktura.number = m_docum_s_faktura.number LIMIT 5');
    10.  
    11. $xml = new DOMDocument("1.0", "UTF-8");
    12. $xml->FormatOutput = true;
    13.     $string_value = $xml->saveXML();
    14. //root
    15.     $issuanse = $xml->createElement("issuanse");
    16.     $issuanse->setAttribute("xmlns","http://www.w3schools.com");
    17.     $issuanse->setAttribute("sender",12);
    18.     $xml->appendChild($issuanse);
    19. while ($row = mysql_fetch_assoc($res)){
    20. //first block  
    21.     $general = $xml->createElement("general");
    22.     $issuanse->appendChild($general);
    23.     $number = $xml->createElement("number" , $row['number']);
    24.     $general->appendChild($number);
    25.     $dateIssuance = $xml->createElement("dateIssuance" , $row['d_issuance']);
    26.     $general->appendChild($dateIssuance);
    27.     $dateTransaction = $xml->createElement("dateTransaction" , $row['d_transact']);
    28.     $general->appendChild($dateTransaction);
    29.     $documentType = $xml->createElement("documentType" , $row['doc_type']);
    30.     $general->appendChild($documentType);
    31. //next block
    32.     $provider = $xml->createElement("provider");
    33.     $issuanse->appendChild($provider);
    34.     $providerStatus = $xml->createElement("providerStatus" , $row['post_stat']);
    35.     $provider->appendChild($providerStatus);
    36.     $dependentPerson = $xml->createElement("dependentPerson" , $row['post_dep_p']);
    37.     $provider->appendChild($dependentPerson);
    38.     $residentsOfOffshore = $xml->createElement("residentsOfOffshore" , $row['post_resid']);
    39.     $provider->appendChild($residentsOfOffshore);
    40.     $specialDealGoods = $xml->createElement("specialDealGoods" , $row['post_spec']);
    41.     $provider->appendChild($specialDealGoods);
    42.     $bigCompany = $xml->createElement("bigCompany" , $row['post_big_c']);
    43.     $provider->appendChild($bigCompany);
    44.     $countryCode = $xml->createElement("countryCode" , $row['post_str']);
    45.     $provider->appendChild($countryCode);
    46.     $unp = $xml->createElement("unp" , $row['post_unp']);
    47.     $provider->appendChild($unp);
    48.     $name = $xml->createElement("name" , $row['post_name']);
    49.     $provider->appendChild($name);
    50.     $address = $xml->createElement("address" , $row['post_adr']);
    51.     $provider->appendChild($address);
    52. //next block
    53.     $recipient = $xml->createElement("recipient");
    54.     $issuanse->appendChild($recipient);
    55.     $recipientStatus = $xml->createElement("recipientStatus" , $row['pol_stat']);
    56.     $recipient->appendChild($recipientStatus);
    57.     $dependentPerson = $xml->createElement("dependentPerson" , $row['pol_dep_p']);
    58.     $recipient->appendChild($dependentPerson);
    59.     $residentsOfOffshore = $xml->createElement("residentsOfOffshore" , $row['pol_resid']);
    60.     $recipient->appendChild($residentsOfOffshore);
    61.     $specialDealGoods = $xml->createElement("specialDealGoods" , $row['pol_spec']);
    62.     $recipient->appendChild($specialDealGoods);
    63.     $bigCompany = $xml->createElement("bigCompany" , $row['pol_big_c']);
    64.     $recipient->appendChild($bigCompany);
    65.     $countryCode = $xml->createElement("countryCode" , $row['pol_str']);
    66.     $recipient->appendChild($countryCode);
    67.     $unp = $xml->createElement("unp" , $row['pol_unp']);
    68.     $recipient->appendChild($unp);
    69.     $name = $xml->createElement("name" , $row['pol_name']);
    70.     $recipient->appendChild($name);
    71.     $address = $xml->createElement("address" , $row['pol_adr']);
    72.     $recipient->appendChild($address);
    73. //next block
    74.     $senderReceiver = $xml->createElement("senderReceiver");
    75.     $issuanse->appendChild($senderReceiver);
    76.     $consignors = $xml->createElement("consignors");
    77.     $senderReceiver->appendChild($consignors);
    78.     $consignor = $xml->createElement("consignor");
    79.     $consignors->appendChild($consignor);
    80.     $countryCode = $xml->createElement("countryCode" , $row['gotpr_str']);
    81.     $consignor->appendChild($countryCode);
    82.     $unp = $xml->createElement("unp" , $row['gotpr_unp']);
    83.     $consignor->appendChild($unp);
    84.     $name = $xml->createElement("name" , $row['gotpr_name']);
    85.     $consignor->appendChild($name);
    86.     $address = $xml->createElement("address" , $row['gotpr_adr']);
    87.     $consignor->appendChild($address);
    88.     $consignees = $xml->createElement("consignees");
    89.     $senderReceiver->appendChild($consignees);
    90.     $consignee = $xml->createElement("consignee");
    91.     $consignees->appendChild($consignee);
    92.     $countryCode = $xml->createElement("countryCode" , $row['grpol_str']);
    93.     $consignee->appendChild($countryCode);
    94.     $unp = $xml->createElement("unp" , $row['grpol_unp']);
    95.     $consignee->appendChild($unp);
    96.     $name = $xml->createElement("name" , $row['grpol_name']);
    97.     $consignee->appendChild($name);
    98.     $address = $xml->createElement("address" , $row['grpol_adr']);
    99.     $consignee->appendChild($address);
    100.  
    101.     $deliveryCondition = $xml->createElement("deliveryCondition");
    102.     $issuanse->appendChild($deliveryCondition);
    103.     $contract = $xml->createElement("contract");
    104.     $deliveryCondition->appendChild($contract);
    105.  
    106.     $number = $xml->createElement("number" , $row['kontrakt']);
    107.     $contract->appendChild($number);
    108.     $date = $xml->createElement("date" , $row['kon_beg']);
    109.     $contract->appendChild($date);
    110.  
    111.     $documents = $xml->createElement("documents");
    112.     $contract->appendChild($documents);
    113.     $document = $xml->createElement("document");
    114.     $documents->appendChild($document);
    115.     $docType = $xml->createElement("docType");
    116.     $document->appendChild($docType);
    117.  
    118.     $code = $xml->createElement("code" , $row['number']);
    119.     $docType->appendChild($code);
    120.     $value = $xml->createElement("value" , $row['name_doc']);
    121.     $docType->appendChild($value);
    122.  
    123.     $date = $xml->createElement("date" , $row['data_doc']);
    124.     $document->appendChild($date);
    125.     $blankCode = $xml->createElement("blankCode" , $row['blank_cod']);
    126.     $document->appendChild($blankCode);
    127.     $seria = $xml->createElement("seria" , $row['seria']);
    128.     $document->appendChild($seria);
    129.     $number = $xml->createElement("number" , $row['numdoc']);
    130.     $document->appendChild($number);
    131.     $xml->save($row['number'].'.xml');
    132.  
    133.  
    134. }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ни чего не понятно, save не работает?
     
    metadon нравится это.
  3. deadlolman

    deadlolman Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    23
    Симпатии:
    1
    Все работает. Дело в том что при сохранении в файл переменный накапливают результаты предыдущих итераций. И запись в файле растет по прогрессии) Нормально сохраняет только в первый XML файл. А остальные содержат записи предыдущих + новое.
    --- Добавлено ---
    Вот например в первом файле после итерации сохраняется содержание--->{1} , после второй итерации сохраняется содержание--->{1,2} а должно только 2.
    --- Добавлено ---
    Знает кто нибудь?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может в цикле после save() очистить $xml и опять инициализировать?
    PHP:
    1. $xml = new DOMDocument("1.0", "UTF-8");
     
    metadon и deadlolman нравится это.
  5. deadlolman

    deadlolman Новичок

    С нами с:
    14 июн 2016
    Сообщения:
    23
    Симпатии:
    1
    Спасибо, помогло. Еще рут пришлось в цикл перенести
     
    denis01 нравится это.