从mysql数据库创建菜单结构

时间:2012-04-24 14:58:10

标签: php mysql database menu

我只是想知道这里的人们的意见,也许还有一些关于如何最好地实施某些事情的指导。

我拥有的是一个非常基本的内部网,仅用于提供公司范围的文档和文件。它在页面顶部有一个基本菜单栏,它有一个顶级项目,然后是子菜单/项目。显然,菜单可以级联很多级别,并且是一个简单的javascript,我有动态驱动器,它变成了一个html< li>结构进入菜单。

基本理念是:

<li><a href='#'>Top Level 1</a>
    <ul>
        <li><a href='#'>Item 1</a></li>
        <li><a href='#'>Item 2</a></li>
        <li><a href='#'>Sub menu 1</a>
            <ul>
                <li><a href='#'>Sub Item 1</a></li>
            </ul>
        </li>
    </ul>
</li>

所以这用于创建菜单。每次你开始一个新的&lt; ul&gt;元素,它将创建一个子菜单。

这样做很好,但是有点痛苦,因为每当网站上的文档发生变化时,我必须手动进入创建新链接,删除旧链接等。

我要做的是将此结构移动到我的数据库中,这样我就可以使用基本的html表单和PHP脚本来在需要时插入,更新和删除链接。

如果我无法上传新文件,它还可以让管理员上传新文件。

我已经快速发挥了这个作用,并找到了一种可行的选择,但是有点笨拙,可能会很难保持前进。

基本上,我会有一个包含下列列的表格:

  • 文档ID
  • 文件名
  • 文件路径
  • 菜单
  • Sub 1
  • Sub 2
  • Sub 3
  • 标签
  • 打开
  • 我可以做的是,有一个唯一的ID供参考,输入文件名和文件路径,它们可以一起用于指向文件位置的href链接。 然后,我可以使用菜单和3个子菜单字段来告诉它将该项目放在菜单结构中的位置。标签只是为链接命名,open in告诉页面打开文档的位置,即_new,frame,ifram等。

    然后,PHP可以使用mysql查询来查找菜单中的所有项目并将其回显。问题是,我需要对每个菜单和子菜单进行单独的MySQL查询,这意味着整个菜单最终可能会充满MySQL查询。

    有人可以建议更好的解决方案,或者帮助PHP尽可能简单灵活吗?

    非常感谢

    编辑:

    如果需要,可以提供PHP的一些示例,但它们非常大。

    2 个答案:

    答案 0 :(得分:2)

    我知道的最佳实践是嵌套树结构,逻辑有两个词:

    表必填字段: id,parent_id,left,right

    然后,在添加第一行时,您获得了此值

    1, 0, 1, 2
    

    接下来将改进左右字段,如:

    2, 0, 3, 4
    3, 0, 5, 6
    

    如果我们需要为第一个项目创建子目录,那么完整的结构将是:

    1, 0, 1, 4
    2, 0, 5, 6
    3, 0, 7, 8
    4, 1, 2, 3
    

    这样你就可以轻松地获取左边所有的树,然后检查每一行的父级别值,如果存在parrent,则计算自己的级别。

    答案 1 :(得分:0)

    我开发了这个“Git”菜单,因为我找不到MySQL驱动的任何东西。 https://github.com/jgarbe/DDrop_Menu我希望有人可以使用它!