[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сортировка разделов согласно структуре csv-файла
nicklas
Здравствуйте.
Не получается решить задачу с рассортировкой загруженных из csv разделов согласно структуре csv-файла.
Написал скрипт загрузки подразделений из csv в виде - один родитель, а все остальные его потомки, т.е. 2 уровня.
т.к. в бд индексация автоматическая, предусмотрены два пользовательских поля, куда из csv загружаются id и parent_id.
Как сформировать структуру разделов, согласно этим данным?

...
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));

}
}

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.