多级菜单与父链接php和mysql

时间:2018-06-09 03:00:19

标签: php mysql

我在多级菜单上遇到了一些问题。我在mysql中有这个字段的表:

id,title,别名(这是链接),parent_id

例如,我将展示如何填充父母和孩子:

1(id)治疗(标题)治疗(别名)0(parent_id)
2(id)程序(标题)程序(别名)1(parent_id)
3(id)注射(标题)注射(别名)2(parent_id)

在输出中我想获得这种类型的链接:

sitename.com/treatment
sitename.com/treatment/procedures
sitename.com/treatment/procedures/injections

我以这种方式从数据库中获取菜单:

    $result = $db->prepare($sql);
    $result->execute();

    $parent = 0;
    $parent_stack = array();
    $html = '';
    $children = array();
    $parent_link = "";

    if($result->rowCount()>0){

        foreach($result as $item)
            $children[$item['parent_id']][] = $item;


            $i=0;
        while((($option = each( $children[$parent])) || ($parent > 0))){
            if(!empty($option)){
                if(!empty($children[$option['value']['id']])){
                    $html .='<li><a href="'.SITEPATH.''.$option["value"]["alias"].'/">'.$option["value"]["title"].'</a>';
                    $html .= '<ul class="submenu">'; 
                    array_push( $parent_stack, $parent );
                    $parent = $option['value']['id'];
                    $parent_link = $option['value']['alias'];                        

                }else{
                        $html .='<li><a href="'.SITEPATH.''.$parent_link.'/'.$option["value"]["alias"].'/">'.$option["value"]["title"].'</a></li>';  
                }

            }else{
                $html .= '</ul></li>';
                $parent = array_pop( $parent_stack );

            }
            $i++;                                
        }

    }
    return $html;

这适用于两个级别,第三级$parent_link这个第二级链接。

谢谢你的关注

0 个答案:

没有答案