PHP在下拉列表中显示菜单树

时间:2016-12-21 12:24:45

标签: php html css mysql

菜单树的功能:

function category_tree($parent_id)
{
    $sql = "SELECT * FROM menu WHERE parent_id ='".$parent_id."'";
    $result = $conn->query($sql);

    echo "<div id=\"wrapper\">
    <div id=\"navmenu\">";
    while($row = mysqli_fetch_object($result)):
        $i = 0;
        if ($i == 0) echo '<ul>';
        echo '<li>' . $row->name;
        category_tree($row->id);
        echo '</li>';
        $i++;
        if ($i > 0) echo '</ul>';
    endwhile;
    echo "</div>
    </div>";
}

CSS文件:

#navmenu {
    margin: 0;
    padding: 0;
}

#navmenu ul{
    margin: 0;
    padding: 0;
    height:30px;
}

#navmenu li{
    margin: 0;
    padding: 0;
    list-style: none;
    float: left;
    position: relative;
    background:#09F;

}

#navmenu ul li a{
    text-align:center;
    text-decoration:none;
    font-family:Arial, Helvetica, sans-serif;
    height:30px;
    width:150px;
    display:block;
    color:#000066;
    padding-top:7px;
}

#navmenu ul ul{
    position:absolute;
    visibility: hidden;
    top:30px;
}

#navmenu ul li:hover ul {
    visibility:visible;
}

#navmenu li:hover {
    background:#3366CC;
}

#navmenu ul li:hover ul li a:hover{
    background:#03C;
    color:#FFFFFF;
}

递归菜单的数据库:

enter image description here

结果是没有使用div元素(id = wrapper,id = navmenu)运行良好,请参阅:

enter image description here

当我放回div元素(id = wrapper,id = navmenu)时,它不会发生我想要的:

enter image description here

我想:当我在“Felso菜单”上的光标显示下拉菜单(Sport,Ekszer,Egyeb)时,如果我在“Foci”上的光标显示下拉菜单(Mezek,Egyeb,Utok,Labdak)等。 ..任何想法我该怎么做,或如何修复我的代码?

1 个答案:

答案 0 :(得分:0)

确定。我解决了这个问题,这是我的代码:

function get_menu_tree($parent_id)
{
    global $conn;
    $menu = "";
    $sqlquery = " SELECT * FROM menu where parent_id='" .$parent_id . "' ";
    $res=mysqli_query($conn,$sqlquery);
    while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))
    {
        $menu .="<li><a href='".$row['link']."'>".$row['name']."</a>";

        $menu .= "<ul>".get_menu_tree($row['id'])."</ul>"; //call  recursively

        $menu .= "</li>";

    }
    return $menu;
}
相关问题