За последние 24 часа нас посетили 17755 программистов и 1621 робот. Сейчас ищут 1862 программиста ...

сортировка разделов согласно структуре csv-файла

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

  1. nicklas

    nicklas Новичок

    С нами с:
    10 янв 2018
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте.
    Не получается решить задачу с рассортировкой загруженных из csv разделов согласно структуре csv-файла.
    Написал скрипт загрузки подразделений из csv в виде - один родитель, а все остальные его потомки, т.е. 2 уровня.
    т.к. в бд индексация автоматическая, предусмотрены два пользовательских поля, куда из csv загружаются id и parent_id.
    Как сформировать структуру разделов, согласно этим данным?
    PHP:
    1. ...
    2. if ($handle) {
    3.     $counter = 0;
    4.     $keys    = array();
    5.     $data    = array();
    6.     while (!feof($handle)) {
    7.         $csv_arr = fgetcsv($handle, 4096, ";", '"');
    8.         if (!$counter) {
    9.             $keys = $csv_arr;
    10.         } else {
    11.             $el = array();
    12.             foreach ($csv_arr as $key => $item) {
    13.                 $el[$keys[$key]] = $item;
    14.             }
    15.             $data[] = $el;
    16.         }
    17.         $counter++;
    18.     }
    19. }
    20. fclose($handle);
    21. if (!CModule::IncludeModule("iblock")) {
    22.     die('error');
    23. }
    24. $ibs = new CIBlockSection;
    25. foreach ($data as $val) {
    26. ...
    27. //как рассортировать разделы в базе согласно таблице?
    28.     $query1 = $ibs->GetList(
    29.         array('sort' => 'asc'),
    30.         array('IBLOCK_ID' => 5, 'DEPTH_LEVEL' => 2, 'UF_SAP_CODE' => $val['parent_id']),
    31.         false,
    32.         array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_SAP_CODE', 'UF_SAP_CODE_PARENT')
    33.     );
    34.     if ($res1 = $query1->Fetch()) {
    35.         // echo "<pre>";
    36.         // print_r($res1);
    37.         //получаем id родителей
    38.         // $pid = $res1['ID'];
    39.         $pid[$res1['UF_SAP_CODE']] = $res1['ID'];
    40.         // echo "<pre>";
    41.         // print_r($pid);
    42.     }
    43.     $query2 = $ibs->GetList(
    44.         array('sort' => 'asc'),
    45.         array('IBLOCK_ID' => 5, 'UF_SAP_CODE_PARENT' => $val['id']),
    46.         false,
    47.         array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_SAP_CODE', 'UF_SAP_CODE_PARENT')
    48.     );
    49.     if ($res2 = $query2->Fetch()) {
    50.         // echo "<pre>";
    51.         // print_r($res2);
    52.         //получаем id потомков
    53.         // $chil = $res2['ID'];
    54.         $chid[$res2['UF_SAP_CODE_PARENT']] = $res2['ID'];
    55.         // echo "<pre>";
    56.         // print_r($chid);
    57.         // $ibs->Update($chil, array('IBLOCK_SECTION_ID' => $pid));
    58.     }
    59. }
     
  2. nicklas

    nicklas Новичок

    С нами с:
    10 янв 2018
    Сообщения:
    4
    Симпатии:
    0
    структура csv:
    id; name; parent_id; start_date; end_date

    структура бд:
    id; iblock_section_id; name; depth_level

    iblock_section_id - поле для родительского id