Дерево меню с отступами на каждом уровне
04 Фев 2009
Многие начинающие программисты задаются вопросом, как сделать древовидное меню. Я в свое время пытался сделать это циклами — плохой тон. Когда понял что такое рекурсии, еще на 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`), )
Последние комментарии