0

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

我所拥有的是一个非常基本的 Intranet,其设计目的只是为了提供公司范围内的文档和文件。它在页面顶部有一个基本菜单栏,有一个顶级项目,然后是子菜单/项目。显然,菜单可以级联许多级别,并且是我得到的一个简单的动态驱动器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>

所以这是用来创建菜单的。每次你启动一个新的 <ul> 元素时,它都会创建一个子菜单。

这工作正常,但有点痛苦,因为每次网站上的文档发生变化时,我都必须手动创建新链接、删除旧链接等。

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

如果我不能这样做,它还使管理人员能够上传新文件。

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

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

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

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

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

    非常感谢

    编辑

    编辑:

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

    4

    2 回答 2

    2

    best practise for this as i know is nested tree structure, which logic is in two words:

    table required fields: id, parent_id, left, right

    then, in adding first row, you got this values

    1, 0, 1, 2
    

    next will improve left and right fields like:

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

    and if we need to make subdirectory for first item, the full structure will be this:

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

    so you can easily take all the tree ordered by left, and then just check every row parent level value, if parrent exists, to calculate its own level.

    于 2012-04-24T15:05:39.730 回答
    0

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

    于 2017-04-03T15:03:36.477 回答