如何创建一个mysql php多级列表导航

时间:2011-10-10 15:31:36

标签: php mysql list navigation nav

基本上我希望能够创建多级导航(许多子导航)。显然我知道这将通过彼此创建列表来完成,但我非常坚持正确显示它的逻辑。

我见过有关父母/子女关系的内容,但找不到任何有效且易于使用的内容。

我不需要知道如何构建HTML。请问php / mysql如何生成列表。

希望你能提供帮助。

A

4 个答案:

答案 0 :(得分:2)

这是我使用的代码。它构建无序列表,具有无限级别的子项。

/*
* Table has 3 fields: `ID`, `PARENTID` and `NAME`
* `ID` is unique, `PARENTID` showing his parent node id.
* This function will go through it and build unordered list and call itself when needed to build subitems.
* $level argument used to define wich node's subitems to build. Default is 0 which is top level.
*/

function showMenu($level = 0) {

$result = mysql_query("SELECT * FROM `tbl_structure` WHERE `PARENTID` = ".$level); 
echo "<ul>";
    while ($node = mysql_fetch_array($result)) { 
        echo "<li>".$node['NAME'];
        $hasChild = mysql_fetch_array(mysql_query("SELECT * FROM `tbl_structure` WHERE `PARENTID` = ".$node['ID'])) != null;
        IF ($hasChild) {
            showMenu($node['ID']);
        }
        echo "</li>";
    }
echo "</ul>";
}

希望有所帮助。

答案 1 :(得分:1)

我认为最有效的方法是从数据库中一次性获取所有记录,然后在php中再次构建层次结构。

所以你的数据库中会有类似的结构:

id    parent_id    menu_item

然后你可以获得所有项目并使用递归函数来构建一个分层数组,你可以遍历它以获得你的菜单,子菜单,子子菜单等项目。请参阅this question and the top-two answers,了解如何重新构建结构。

答案 2 :(得分:0)

如果您的意思是HTML,就像这样:

<ul>
   <li>
      <a href="#">Title</a>
      <ul>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
         <li><a href="#">Title</a></li>
      </ul>
   </li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
   <li><a href="#">Title</a></li>
</ul>

答案 3 :(得分:0)

假设您知道如何创建填充mysql表的内容 假设您有以下表格:Universes&gt;分类&gt;市场&gt;段

1)在选择中列出“Universes”的内容。当用户选择时,调用另一个.php脚本并向其发送所选Universe的ID(使用GET或POST)

2)列出'Categories'的内容,WHERE idUniverses =你发送到第二个脚本的id。

3)市场相同......

使用AJAX更容易。

需要代码吗?