Здравствуйте. Не получается решить задачу с рассортировкой загруженных из csv разделов согласно структуре csv-файла. Написал скрипт загрузки подразделений из csv в виде - один родитель, а все остальные его потомки, т.е. 2 уровня. т.к. в бд индексация автоматическая, предусмотрены два пользовательских поля, куда из csv загружаются id и parent_id. Как сформировать структуру разделов, согласно этим данным? PHP: ... if ($handle) { $counter = 0; $keys = array(); $data = array(); while (!feof($handle)) { $csv_arr = fgetcsv($handle, 4096, ";", '"'); if (!$counter) { $keys = $csv_arr; } else { $el = array(); foreach ($csv_arr as $key => $item) { $el[$keys[$key]] = $item; } $data[] = $el; } $counter++; } } fclose($handle); if (!CModule::IncludeModule("iblock")) { die('error'); } $ibs = new CIBlockSection; foreach ($data as $val) { ... //как рассортировать разделы в базе согласно таблице? $query1 = $ibs->GetList( array('sort' => 'asc'), array('IBLOCK_ID' => 5, 'DEPTH_LEVEL' => 2, 'UF_SAP_CODE' => $val['parent_id']), false, array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_SAP_CODE', 'UF_SAP_CODE_PARENT') ); if ($res1 = $query1->Fetch()) { // echo "<pre>"; // print_r($res1); //получаем id родителей // $pid = $res1['ID']; $pid[$res1['UF_SAP_CODE']] = $res1['ID']; // echo "<pre>"; // print_r($pid); } $query2 = $ibs->GetList( array('sort' => 'asc'), array('IBLOCK_ID' => 5, 'UF_SAP_CODE_PARENT' => $val['id']), false, array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_SAP_CODE', 'UF_SAP_CODE_PARENT') ); if ($res2 = $query2->Fetch()) { // echo "<pre>"; // print_r($res2); //получаем id потомков // $chil = $res2['ID']; $chid[$res2['UF_SAP_CODE_PARENT']] = $res2['ID']; // echo "<pre>"; // print_r($chid); // $ibs->Update($chil, array('IBLOCK_SECTION_ID' => $pid)); } }
структура csv: id; name; parent_id; start_date; end_date структура бд: id; iblock_section_id; name; depth_level iblock_section_id - поле для родительского id