【发布时间】:2014-01-17 16:36:59
【问题描述】:
我试图对过去的帖子发表评论,但因为没有足够的代表而没有被允许:(
我正在寻求帮助,将我修改后的预排序树遍历表变成一个
<ul> <li>
使用 PHP 的菜单。
我看过这个:
Getting a modified preorder tree traversal model (nested set) into a <ul>
..它几乎回答了我需要知道的所有内容.. 除了一个问题。我表中的项目并非都是唯一命名的,因为相同的菜单项可以出现在不同的父项下(在这种情况下,相同的部门名称在不同的文档“类型”下。-所以当我运行 SQL 代码时:
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM menu AS node
CROSS JOIN menu AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft
'Admin',这是一个使用两次的菜单名称的示例,将其“深度”级别加在一起(3 和 2)并显示为 5.. 这当然会弄乱它的位置并且只显示一次在创建菜单时。
这是我的 SQL 表:
CREATE TABLE `menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`lft` int(11) NOT NULL,
`rgt` int(11) NOT NULL,
PRIMARY KEY (`id`),
)
INSERT INTO `menu` (`id`, `name`, `lft`, `rgt`) VALUES
(21, 'root', 1, 30),
(39, 'Forms', 2, 11),
(40, 'Admin', 3, 6),
(56, 'Domcare', 7, 8),
(58, 'MIS', 9, 10),
(59, 'Documents', 12, 21),
(60, 'Residential', 15, 20),
(61, 'Guides', 22, 29),
(62, 'Hardware', 23, 28),
(63, 'Hosting', 24, 25),
(64, 'Installation', 26, 27),
(65, 'Absence', 4, 5),
(67, 'Admin', 13, 14);
对此的任何帮助将不胜感激!
【问题讨论】: