首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用php & mysql创建子菜单动态菜单?

如何用php & mysql创建子菜单动态菜单?
EN

Stack Overflow用户
提问于 2021-07-01 04:47:03
回答 1查看 163关注 0票数 0

我正在尝试用php从mysql表格中创建一个动态菜单,但我不知道如何创建非分类菜单,这是我到目前为止所做的,并且只处理有子菜单的分类,但它们没有在echo上显示的非分类菜单。

MySQL类别菜单表:

代码语言:javascript
运行
复制
catid        name         group  
1      category name 1      0 -> whithout submenu
2      category name 2      1 -> category
3      category name 3      1 -> category
4      category name 4      0 -> whithout submenu
5      category name 5      0 -> whithout submenu

MySQL子菜单表:

代码语言:javascript
运行
复制
  id      name      parentid -> catid (category menu table)   
    1      name 1     2  
    2      name 2     3
    3      name 3     3
    4      name 4     3
    5      name 5     2

我的Php代码:

代码语言:javascript
运行
复制
 <?php 
           
    function loop($array = array(), $parentID = 0) {
        if (!empty($array[$parentID])) {
            echo '<ul>';
            foreach ($array[$parentID] as $items) {
                echo '<li>';
                echo $items['name'];
                loop($array, $items['catid']);
                echo '</li>';
            }
            echo '</ul>';
        }
    }
    
    function  menu() {  
        $query = $db->query("SELECT m.name, m.parentid, c.group FROM `submenus` m LEFT JOIN( SELECT catid, group, parentid, ico, STATUS , MIN(name) AS category FROM `menu_categories` GROUP BY catid ) c ON m.parentid = c.catid");
        $array = array();
    
        if ($db->numRows($query)) {
            while ($rows = $db->fetch($query)) {
                $array[$rows['parentid']][] = $rows;
            }
            loop($array);
        }
    }
    echo menu();
 ?> 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-01 05:14:04

尝试使用Full Join,而不是在category表中忽略不成对记录的Left Join

代码语言:javascript
运行
复制
<?php 
           
    function loop($array = array(), $parentID = 0) {
        if (!empty($array[$parentID])) {
            echo '<ul>';
            foreach ($array[$parentID] as $items) {
                echo '<li>';
                echo $items['name'];
                loop($array, $items['catid']);
                echo '</li>';
            }
            echo '</ul>';
        }
    }
    
    function  menu() {  
        $query = $db->query("SELECT m.name, m.parentid, c.group FROM `submenus` m FULL JOIN( SELECT catid, group, parentid, ico, STATUS , MIN(name) AS category FROM `menu_categories` GROUP BY catid ) c ON m.parentid = c.catid");
        $array = array();
    
        if ($db->numRows($query)) {
            while ($rows = $db->fetch($query)) {
                $array[$rows['parentid']][] = $rows;
            }
            loop($array);
        }
    }
    echo menu();
 ?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68201422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档