Рекурсивная функция PHP/SQL для получения всех родительских данныхPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Рекурсивная функция PHP/SQL для получения всех родительских данных

Сообщение Anonymous »

Я знаю, что есть много вопросов по рекурсивным запросам, но это не столько вопрос «как?», сколько вопрос «чего мне не хватает?».

Я чувствую, что уже близок, но это просто не работает для меня. Я пытаюсь получить всех родителей в строке подкатегории:


Данные


cat_id | кот_родитель | имя_кошки | описание_кошки | кот_сорт | cat_active
1 | 0 | Главная | Местоположение основного форума | 6 | 1
2 | 0 | Программное обеспечение | Обсуждения программного обеспечения | 1 | 1
17 | 1 | Программирование | | 1 | 1
19 | 1 | Рабочая среда MySql | Описание | 1 | 1
20 | 2 | Таблицы SQL | Описание | 2 | 1
21 | 2 | Еще один тест | | 1 | 1
22 | 21 | Суб-Саб Кот | | 1 | 1
23 | 22 | Суб-суб-суб-кат | | 1 | 1



Контроллер

Код: Выделить всё

    function getparents($catid = 1) {
$parents = $this->forum_model->get_parent($catid);

echo "
" . print_r($parents, TRUE) . "";
}

Модель

Код: Выделить всё

function get_parent($catid = 0) {
$parent = array();
$this->db->select('*');
$this->db->from(TBL_FORUM_CATEGORIES);
$this->db->where('cat_id',$catid);
$child = $this->db->get()->row_array();
$parent[] = $child;

if ($child['cat_parent'] == 0) {
return $parent;
} else {
$push = $this->get_parent($child['cat_parent']);
array_push($parent,$push);
}
}

Результат

Я знаю, что запросы выполняются по крайней мере частично правильно, потому что я включил профилировщик и вижу, как выполняются запросы.

Запуск контроллера с ID=22:


0.0007 SELECT * FROM `forum_categories` WHERE `cat_id` = '22'
0.0004 SELECT * FROM `forum_categories` WHERE `cat_id` = '21'
0.0004 SELECT * FROM `forum_categories` WHERE `cat_id` = '2'


Подробнее здесь: https://stackoverflow.com/questions/497 ... arent-data
Ответить

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

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»