Делаю бесконечную вложенность категорий.
В бд храню такую инфу
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 уровней.
Посчитайте кол-во запросов, прикиньте нагрузку.
Казнить, нельзя помиловать. Ищите другие способы.
Представьте как это работает, когда вложенность к примеру 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
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 квери никакой трагедии....ну а если действительно их будет много - то беда))