PHP递归导航列表菜单帮助

PHP递归导航列表菜单帮助,php,recursion,navigation,html-lists,Php,Recursion,Navigation,Html Lists,我正在尝试添加一个动态递归导航列表菜单到我正在工作的站点。 场景是菜单有两个由parentidpreid关联的级别 我的问题是我可以正确显示第一级列表,但是我无法正确显示第二级列表。我不确定在哪里添加第二级的UL和/UL标签 这就是我想要的 <ul> <li>Item 1</li> <li>item 2</li> <li>item 3</li> <ul> <li>sub item 1&

我正在尝试添加一个动态递归导航列表菜单到我正在工作的站点。 场景是菜单有两个由parentidpreid关联的级别

我的问题是我可以正确显示第一级列表,但是我无法正确显示第二级列表。我不确定在哪里添加第二级的UL和/UL标签

这就是我想要的

<ul>
<li>Item 1</li>
<li>item 2</li>
<li>item 3</li>
<ul>
  <li>sub item 1</li>
  <li>sub item 2</li>
</ul>
<li>Item 4</li>
<li>item 5</li>
<ul>
  <li>sub item 1</li>
  <li>sub item 2</li>
</ul>
<li>item 6</li>
</ul>
请有人帮我解释一下我需要在哪里放置2级UL和/或UL标签。在过去的两天里,我一直在用这个来敲我的头。
非常感谢您的帮助……

在嵌套列表中,子列表将始终包含在列表元素中-这就是它们嵌套的原因。您可以在通用代码中使用此格式在一个函数中打印完整列表,但您应该了解以下基本概念:

function get_list($parent) {
    $children = query('SELECT * FROM table WHERE parent_id = '.$parent);
    $items = array();
    while($row = fetch_assoc($children)) {
        $items[] = '<li>'.$row['name'].get_list($row['id']).'</li>';
    }
    if(count($items)) {
        return '<ul>'.implode('', $items).'</ul>';
    } else {
        return '';
    }
}
这将为您提供一个结构合理的列表,如下所示:

<ul>
    <li>Item 1</li>
    <li>Item 2
        <ul>
            <li>Item 2.1</li>
            <li>Item 2.2</li>
        </ul>
    </li>
</ul>

尽管这个问题与我两天前发布的问题并不完全相同,但这是我试图用文件夹而不是数据库所做的工作的结果。以下内容将遍历指定$path的目录和所有子目录,并在脚本运行完成后在嵌套的无序列表中显示结果。希望能有帮助

<?php
function readDirs($path){
    $dirHandle = opendir($path);
    echo "<ul>";
    while ($item = readdir($dirHandle)) {
        $newPath = $path . "/" . $item;

        if (is_dir($newPath) && $item != '.' && $item != '..') {
            echo "<li><a href='$newPath'>$item</a>";
            readDirs($newPath);
        }
    }
    echo "</li></ul>";
}
$path = "./galleries";
readDirs($path);

?>

嗨,丹尼尔,你是一位大师,非常感谢你的时间和帮助。你的回答很有魅力…谢谢,这确实帮了我很大的忙!
function get_list($parent) {
    $children = query('SELECT * FROM table WHERE parent_id = '.$parent);
    $items = array();
    while($row = fetch_assoc($children)) {
        $items[] = '<li>'.$row['name'].get_list($row['id']).'</li>';
    }
    if(count($items)) {
        return '<ul>'.implode('', $items).'</ul>';
    } else {
        return '';
    }
}
<ul>
    <li>Item 1</li>
    <li>Item 2
        <ul>
            <li>Item 2.1</li>
            <li>Item 2.2</li>
        </ul>
    </li>
</ul>
<?php
function readDirs($path){
    $dirHandle = opendir($path);
    echo "<ul>";
    while ($item = readdir($dirHandle)) {
        $newPath = $path . "/" . $item;

        if (is_dir($newPath) && $item != '.' && $item != '..') {
            echo "<li><a href='$newPath'>$item</a>";
            readDirs($newPath);
        }
    }
    echo "</li></ul>";
}
$path = "./galleries";
readDirs($path);

?>