Найти и проставить id родителей

184
17 января 2018, 17:50

Здравствуйте. Имеется таблица вида:

В соответствии с полями 'uf_sap_code' и 'uf_sap_code_parent' необходимо найти родительские id и заполнить ими поле 'iblock_section_id'. Пытаюсь написать рекурсию, но не получается:

function getCategory() {
    global $ibs;
    $query = $ibs->GetList(
        array('sort' => 'asc'),
        array('IBLOCK_ID' => 5),
        false,
        array('ID', 'NAME', 'IBLOCK_SECTION_ID', 'UF_SAP_CODE', 'UF_SAP_CODE_PARENT')
    );
    $result = array();
    while ($row = $query->Fetch()) {
        $result[$row["UF_SAP_CODE_PARENT"]][] = $row;
    }
    return $result;
}
$category_arr = getCategory();
function getParentId($parent_id) {
    global $category_arr;
    if (isset($category_arr[$parent_id])) {
        foreach ($category_arr[$parent_id] as $value) {
            $id = $value["ID"];
            getParentId($value["UF_SAP_CODE"]);
        }    
        return $id;
    }
}

К сожалению с рекурсией не приходилось раньше сталкиваться. Насколько я понял, нужно условие углубления, но не могу сообразить. Подскажите, пожалуйста.

Answer 1

Если я все верно понял то здесь и правда можно обойтись без рекурсии, несмотря на то что связи в таблице могут быть.. вложенными многократно. Основная суть ведь в том чтобы в поле iblock_section_id проставить ID родителя? Думаю тут подошел бы один вот такой SQL запрос

UPDATE your_table t1 
JOIN your_table t2 ON t1.uf_sap_code_parent = t2.uf_sap_code
SET t1.iblock_section_id = t2.id

Вместо "your_table" имя вашей таблицы. Во время UPDATE'а мы попутно находим родителя (по полям uf_sap_code_parent и uf_sap_code) и извлекаем ID из него, который потом будет записан в iblock_section_id обновляемой таблицы.

READ ALSO
Однотипные блоки php

Однотипные блоки php

Небольшой сайт 5 страницФутер хедер одинаковые

202
Ошибка HP Parse error: syntax error, unexpected '[' in

Ошибка HP Parse error: syntax error, unexpected '[' in

При запуске скрипта crontab ругается на функцию, которая приведена нижеВыдает ошибку -

181
Отправка POST запроса через планировщик

Отправка POST запроса через планировщик

Добрый деньЕсть HTML код

245
С++ работа с XML

С++ работа с XML

Здравствуйте, мог бы кто-нибудь подсказать популярные библиотеки С++ для работы с XML(для записи в него и считывание данных из него) или хороший...

269