RSS лента

Den1xxx

Древовидное меню

Оценить эту запись
Цитата Сообщение от zabmix Посмотреть сообщение
Если правильно понял.

Цикл в цикле. Дерево хоть из 1 млн лет))

function block($pid=0) {
$query = mysql_query("SELECT value, id FROM таблица WHERE prent_id='".($pid ? $pid : 0)."' ORDER by id ASC");
echo '<ul>';
while(list($title, $pid) = mysql_fetch_array($query)) {
echo "<li>$title";
block($pid);
echo "</li>";
}
echo '</ul>';
}

block();


в базе должно быть

CREATE TABLE IF NOT EXISTS `таблица` (
`id` int(9) NOT NULL auto_increment,
`prent_id` int(9) NOT NULL default '0',
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


INSERT INTO `таблица` (id, prent_id, title) VALUES
(1, 0, 'Семья 1'),
(2, 1, 'Ребенок 1'),
(3, 1, 'Ребенок 2'),
(4, 0, 'Семья 2'),
(5, 4, 'Ребенок 1'),
(6, 4, 'Ребенок 2'),
(7, 4, 'Ребенок 3');


Построено по системе:
<ul>
<li>simple block<li>
<li>
mix block
<ul>
<li>simple block</li>
<li>simple block</li>
</ul>
</li>
<li>Simple block</li>
</ul>
У этого дерева есть существенный недостаток — в каждом цикле рекурсии идёт запрос в базу MySQL.
Рекурсия без обращения к базе рассматривается в http://www.html.by/entries/108-Besko...revo-kategorij

Отправить "Древовидное меню" в Digg Отправить "Древовидное меню" в del.icio.us Отправить "Древовидное меню" в StumbleUpon Отправить "Древовидное меню" в Google

Обновлено 11.10.2011 в 06:38 Den1xxx

Метки: Нет Добавить / редактировать метки
Категории
Веб-программиров

Комментарии