0

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

我看过有关父母/子女关系的资料,但找不到任何有效且易于理解的内容。

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

希望你能帮忙。

一个

4

4 回答 4

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>";
}

希望有帮助。

于 2013-01-07T01:16:53.830 回答
1

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

因此,您的数据库中将具有与此类似的结构:

id    parent_id    menu_item

然后您可以获取所有项目并使用递归函数来构建一个分层数组,您可以循环访问该数组以获取您的菜单、子菜单、子子菜单等项目。请参阅此问题以及有关如何重新构建结构的前两个答案。

于 2011-10-10T16:07:57.310 回答
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>
于 2011-10-10T15:38:29.897 回答
0

假设您知道如何创建充满内容的 mysql 表假设您有以下表:Universes > Categories > Markets > Segments

1)在选择中列出“宇宙”的内容。当用户选择时,调用另一个 .php 脚本并将所选 Universe 的 id 发送给它(使用 GET 或 POST)

2) 列出“类别”的内容,其中 idUniverses = 您发送到第二个脚本的 id。

3) 市场也一样...

使用 AJAX 更容易。

需要代码吗?

于 2011-10-10T16:05:25.047 回答