[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с рекурсивной функцией
tazododu
Всем привет!

Делаю бесконечную вложенность категорий.

В бд храню такую инфу
id | name | parent_id

Никак не получается сделать рекурсивную функцию для извлечения всех подкатегорий категории

	
$id = 5;// допустим нужно получить все подкатегории(и глубже) этой категории
function rec($id)
{
global $db;
$sql = "
SELECT `id`, `name`, `parent`
FROM `firms_folders_copy`
WHERE `parent` = '"
.$id."'";
$temp = $db->mExecQueryAssoc($sql);
if(!empty($temp))
{
foreach($temp as $t)
{
$id = $t['parent'];
rec($id);
}
}

return $categories[$temp[0]['id']] = $temp[0];
}


На выходе пытаюсь получить массив, где ключ id а в нем вся информация о категории. Строить дерево по этому массиву у меня получилось




Спустя 4 минуты, 40 секунд (21.12.2010 - 15:30) Семён написал(а):
Алгоритм изначально не имеет право на существование.
Казнить, нельзя помиловать. Ищите другие способы.
Представьте как это работает, когда вложенность к примеру 300 уровней.
Посчитайте кол-во запросов, прикиньте нагрузку.

Спустя 2 минуты, 49 секунд (21.12.2010 - 15:32) vital написал(а):
Цитата
Ищите другие способы.

Я даже подскажу какие.
Либо LEFT JOIN самого себя, как описано в офф рук-вe по MySql
либо Nested Sets как можно нагуглить

Спустя 1 минута, 4 секунды (21.12.2010 - 15:34) Семён написал(а):
Вот пользователь с нашего форума давал ссылочку:
http://dev.mysql.com/tech-resources/articl...hical-data.html

Спустя 8 минут, 53 секунды (21.12.2010 - 15:42) vital написал(а):
Цитата
Вот пользователь с нашего форума давал ссылочку:

собственно там и описан джоин самого себя. При неограниченной вложенности не катит. Судя по замыслу автора - там именно неограниченность. Остается только Nested Sets,

Спустя 16 минут, 53 секунды (21.12.2010 - 15:59) tazododu написал(а):
Спасибо за дельные советы, оказывается все куда сложнее, чем я мог изначально представить....

Спустя 1 минута, 12 секунд (21.12.2010 - 16:01) tazododu написал(а):
И что-то с кол-ом вложений большим не продумал. Рассуждал - ну добавил я пару подрубрик 2 квери никакой трагедии....ну а если действительно их будет много - то беда))
Быстрый ответ:

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