Нужен совет по Дерево каталогов NESTED SETS (вложенные множества)

Статус
В этой теме нельзя размещать новые ответы.

trooll

PHP кодер
Регистрация
22 Дек 2008
Сообщения
482
Реакции
117
Приветсвую.

Таки решился взяться основательно за написание своей CMS, необходима помощь советом по сабжу. Собственно интересует готовый, проверенный класс для работы с Деревом каталогов по принципу NESTED SETS (вложенные множества).

Информация по NESTED SETS если кому на слух тяжеловато вспомнить что это:
Для просмотра ссылки Войди или Зарегистрируйся

Обязательные требования:
1) Базы MySQL
2) PDO или обычный синтаксис запросов MySQL
3) Желательно что бы класс не тянул за собой хвост из множества дополнительных классов необходимых для работы этого класса
 
Из тяжелой артиллерии - Для просмотра ссылки Войди или Зарегистрируйся
А если что по легче то есть Для просмотра ссылки Войди или Зарегистрируйся или Для просмотра ссылки Войди или Зарегистрируйся

У всех свои плюсы и минусы, а если вы уж свою CMS пишите то почему же самим не написать класс по работе с nested tree с нужным именно вам функционалом?
 
я этим пользуюсь
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Всегда пользовался таким методом:

PHP:
function show_menu($id, $curr)
{
    $tree_query = mysql_query("SELECT * FROM categories WHERE parent_id=$id");
    while ($menu_tree = mysql_fetch_assoc($tree_query))
        {
            $res = mysql_query("SELECT * FROM categories WHERE parent_id='".$menu_tree['categories_id']."'");
            if(mysql_num_rows($res)>0)
                {
                    $has_sub = true;
                }
            else
                {
                    $has_sub = false;
                }
            $check = mysql_fetch_row($res);
            if ($check == true)
                {
                    if($menu_tree['categories_id'] == $curr)
                        {
                            echo "<li class='curr'><a href='/index.php?catid=".$menu_tree['categories_id']."'>".$menu_tree['cat_name']."</a>";
                        }
                    else
                        {
                            echo "<li><a href='/index.php?catid=".$menu_tree['categories_id']."'>".$menu_tree['cat_name']."</a>";
                        }
                    if ($has_sub)
                        {
                            echo "<ul>";
                        }
                    else
                        {
                            echo "</li>";
                        }
                    show_menu($menu_tree['categories_id'], $curr);
                    echo "</ul></li>";
                }
            else
                {
                    if($menu_tree['categories_id'] == $curr)
                        {
                            echo "<li class='curr'><a href='/index.php?catid=".$menu_tree['categories_id']."'>".$menu_tree['cat_name']."</a>";
                        }
                    else
                        {
                            echo "<li><a href='/index.php?catid=".$menu_tree['categories_id']."'>".$menu_tree['cat_name']."</a>";
                        }
                    if ($has_sub)
                        {
                            echo "<ul>";
                        }
                    else
                        {
                            echo "</li>";
                        }
                    show_menu($menu_tree['categories_id'], $curr);
                    if ($has_sub) echo "</ul>";
                }
        }
        return;
 
}
if(isset($_GET['catid']) && $_GET['catid'] !='')
    {
        $curr = $_GET['catid'];
    }
else
    {
        $curr = $_GET['catid'];
    }
Это можно сказать демонстрационный вариант, обычно вместо вывода формирую массив, а там уже по потребностям.
 
Вот например неплохой класс
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху