php - mysql 创建一个带有有序子菜单的菜单

标签 php html mysql sql

我正在尝试为网站创建一个菜单系统,您可以在其中创建带有子菜单选项的菜单。 在我的 mysql 'menu_item' 表中,有一个 'hierarchy' 列,如果它是顶级菜单,则该列将保存 0,或者它位于菜单层次结构中的菜单项的 id。 现在,我想做的是提出一个 SQL 查询,该查询将返回一个数组,该数组已经以这样的方式处理了它的顺序:在每一行之后,它将布置所有行按等级制度划分的。 例如,如果我有这个菜单:

menu1 - menu1.1, menu1.2 menu2 - menu 2.1, menu 2.2 menu 3 - menu 3.1

结果应该是这样的:

menu 1 menu 1.1 menu 1.2 menu 2 menu 2.1

等等。

我无法全神贯注于如何去做。这是否可以在 MySQL 中完成,或者我是否必须返回整个菜单项列表并在 PHP 中对它们进行排序?

谢谢。

最佳答案

我假设您在 menu_item 表中有一个列,其中包含菜单项名称,例如“菜单 1”、“菜单 2”等。我将该列称为 menu_item_name,因为您的问题中未指定它。

我认为解决这个问题的方法是如果层次结构为零,则在返回的列上附加任何内容,否则附加一个“。”和层次编号。此外,按您已经排序的内容(可能是 menu_item_name)排序,然后按层次结构排序。

SELECT 
    menu_item_name + CASE WHEN hierarchy <> 0 THEN '.' + hierarchy ELSE '' END
FROM
    menu_item
ORDER BY
    menu_item_name, hierarchy

尝试一下,让我知道它是否有效。

干杯,

Z

关于php - mysql 创建一个带有有序子菜单的菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440832/

相关文章:

MySQL查询

php - MySQL-SELECT 进入特殊数组

php - CodeIgniter:从数据库(表)填充表(HTML/表单)

css - 使用 Netbeans IDE 在 HTML5 元素中创建代码片段

javascript - 如何使用 jQuery 调整 DIV 行的大小

php - 在 mysql 中搜索 WHERE NOT 函数来查找字符串?

php - 无法正确实现加入

php - 使 PhP 代码先于 Javascript 执行

html - 带有 iframe 的静态左列填充页面右侧的剩余部分

mysql - 对部分匹配执行全文搜索,其中最短匹配在 MySQL 中具有最高相关性?