【问题标题】:creating menu structure from mysql database从mysql数据库创建菜单结构
【发布时间】:2012-04-24 14:58:10
【问题描述】:

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

我拥有的是一个非常基本的 Intranet,其设计目的只是为了提供公司范围内的文档和文件。它在页面顶部有一个基本菜单栏,有一个顶级项目,然后是子菜单/项目。显然菜单可以级联很多层,是我得到的一个简单的动态驱动的javascript,它把一个html

  • 结构变成了菜单。

    基本思路是这样的:

    <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>
    

    所以这是用来创建菜单的。每次启动一个新的

      元素时,它都会创建一个子菜单。

      这很好用,但有点麻烦,因为每次网站上的文档发生变化时,我都必须手动创建新链接、删除旧链接等。

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

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

      我对此进行了快速尝试,并找到了一个可行的选项,但有点笨拙,并且可能很难继续前进。

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

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

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

      谁能建议更好的解决方案,或者帮助 PHP 尽可能简单和灵活?

      非常感谢

      编辑

      编辑:

      如果需要,可以提供一些PHP的例子,但它们都很大。

  • 【问题讨论】:

      标签: php mysql database menu


      【解决方案1】:

      据我所知,最佳实践是嵌套树结构,其逻辑用两个词表示:

      表格必填字段: id, parent_id, 左, 右

      然后,在添加第一行时,你得到了这个值

      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 个分支的所有子项和子项,则取其中 left>1 和 right
      • 我发现这篇文章帮助我理解了左值和右值:sitepoint.com/hierarchical-data-database-2
      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-16
        • 1970-01-01
        • 2022-10-15
        • 1970-01-01
        相关资源
        最近更新 更多