Help with PHP recursive navigation list menu

前端 未结 2 1370
失恋的感觉
失恋的感觉 2020-12-17 05:34

I am trying to add a dynamic recursive navigation list menu to a site of am working on. The scenerio is that the menu has 2 levels related by a parentid(preid).

My i

相关标签:
2条回答
  • 2020-12-17 05:53

    In a nested list, sub-lists will always be contained within a list element-- that's what makes them nested. You can print a full list in just one function using this format (in generic code, but you should get the basic idea):

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

    And this will give you a list structured properly as:

    <ul>
        <li>Item 1</li>
        <li>Item 2
            <ul>
                <li>Item 2.1</li>
                <li>Item 2.2</li>
            </ul>
        </li>
    </ul>
    
    0 讨论(0)
  • 2020-12-17 06:00

    All though this question is not the exact same as the question I posted 2 days ago, here is the result of what I was attempting to do with folders rather than a DB. The following will traverse the directory and all sub directories of the specified $path and spits out the results in a nested un-ordered list upon completion of running the script. Hope it helps.

    <?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);
    
    ?>
    
    0 讨论(0)
提交回复
热议问题