Главная > Заметки, Сделай сам, Статьи > Дерево меню с отступами на каждом уровне

Дерево меню с отступами на каждом уровне

Многие начинающие программисты задаются вопросом, как сделать древовидное меню. Я в свое время пытался сделать это циклами — плохой тон. Когда понял что такое рекурсии, еще на Delphi pascal и потом перейдя на разработку сайтов, нашел пример, разобрал его и по аналогии написал свой код, в принципе ничем не отличавшийся от других:

function writeTreeLeftMenu($parent,$level==0)
    {
    global $DB, $level;
    $all = $DB->getAll('SELECT * FROM tb_pages WHERE parent="'.$parent.'" ORDER BY `id`');
    foreach ($all as $num => $item)
        {
        if ($level==0) $sel=true; else $sel=false;
        $title=$item['title_menu'];
        echo '<div style="padding-left: '.($level*20).'px"><a href="/'.path($item['path_id']).'">'.($sel ? '<strong>'.$title.'</strong>' : $title).'</a></div>';
        $level++;
        writeTreeLeftMenu($item['path_id'],$level);
        $level--;
        }
    }
// ID_NODE - ветка, с которой нужно начать строить дерево

writeTreeLeftMenu(ID_NODE);

Основные условия:
У вас должна быть таблица с данными, из которых Вы будете строить дерево:

CREATE TABLE `tb_pages` (
`id` int(14) NOT NULL auto_increment,
`parent` int(14) NOT NULL default '1',
`title_menu` varchar(255) default NULL,
PRIMARY KEY  (`id`),
KEY `parent` (`parent`),
)

Заметки, Сделай сам, Статьи , ,

  1. Комментариев пока нет.
  1. Трекбеков пока нет.