繁体   English   中英

检索分层数据

[英]Retrieve hierarchical data

我正在尝试为CMS系统创建一个动态菜单,这是我的sql表,它具有一个名为content的额外字段。

parent_id  order     id  titel                  
0          1         2   Home                   
0          2         4   Contact                
0          3         9   stuff         
2          1         1   more stuff
2          2         3   way more stuff             
9          1         10  all stuff

我想要这个结果:

home
 more stuff
 way more stuff
contact
stuff
 all stuff

这就是我所说的菜单:

        $resultPaginas = mysqli_query($mysqli, "select id, titel, parent_id, volgorde from TABLE order by order");
    if (!$resultPaginas) {
        die(mysqli_error($mysqli));
    }

这将显示由parent_id排序的表。

它已经完成了所有工作,我知道我需要做一个while循环,但是如何执行正确的while循环才能获得想要的结果?

ps这将是一个菜单

使用此递归函数构建菜单:

function buildMenu($parentId = 0) {
    $menu = array();

    $result = mysqli_query($mysqli, "SELECT `id`, `titel`, `parent_id`, `volgorde` FROM [TABLE] WHERE `parent_id` = $parentId ORDER BY `order`");

    if ($result !== false) {
        while ($page = $result->fetch_assoc()) {
            $page["children"] = buildMenu($page["id"]);
            $menu[] = $page;
        }
    }
    return $menu;
}

像这样调用递归函数

$resultPaginas = buildMenu();

$ resultPaginas的示例内容:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [titel] => home
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [parent_id] => 1
                            [titel] => more stuff
                        )

                    [1] => Array
                        (
                            [id] => 3
                            [parent_id] => 1
                            [titel] => way more stuff
                        )

                )

        )

    [1] => Array
        (
            [id] => 4
            [parent_id] => 0
            [titel] => contact
        )

)

首先尝试从父ID为0的表中选择全部

并做遍历

样品:

foreach($parent as $par){
//Then you need to write another query to take all submenus for current parentid menu

  $submenus= mysqli_query($mysqli, "select id, titel, parent_id, volgorde from TABLE where parent_id = $par.id order by order");

//Then again loop trough 

foreach($submenus as $sub){

// and add existing submenus to parent menu
}
}

注意:这只是概念抱歉,如果语法不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM