Вопрос: PHP, показывающий дерево меню в выпадающем списке


Функция для дерева меню:

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) и т. Д. ... идеи, как я могу это сделать, или как исправить мой код?


4


источник


Ответы:


Хорошо. Я переместил эту проблему, вот мой код:

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

0