2013-10-07 105 views
0

我需要在php中的相应父项下显示所有子菜单项。 我创建MySQL查询,但我不能让他们的父母items.Here下的所有子项是我的代码:如何在PHP的父项下显示子菜单项?

for ($i = 0; $i < count($menu); $i++) { 

    echo'<li><a href="' . $url . $menu[$i]['id'] . '" title="' . $menu[$i]["menu_name"] . '">' . $menu[$i]["menu_name"] . '</a>'; 
    if ($menu[$i]['parent_id'] != "0" && $menu[$i]['parent_id'] != null) { 
     echo'<ul>'; 
     echo'<li><a href="#" title="' . $menu[$i]["submenu_name"] . '">' . $menu[$i]["submenu_name"] . '</a></li></ul></li>'; 
    } 
} 

MySQL Query: SELECT m.id, m.menu_name, sm.parent_id,sm.submenu_name,sm.id 
    FROM menu AS m 
    LEFT JOIN submenu as sm on (m.id=sm.parent_id) 

    Home | Courses | Courses | 
     | Course-1| Course 2 | 

所以我需要在课程教学-1和课程2。请帮我在哪里我错了在PHP代码?

+0

我对这个问题感到困惑。您是否无法在父级下显示子项目,或者无法从数据库获取子级信息? – Casey

+0

其实我得到的最终输出是最后一行,即看到我在课程和课程2下的另一课程下获得课程-1。我想在Courses.yes下显示课程1和课程-2,但我无法在父项目下显示子项目! –

回答

1

尝试这样:

for ($i = 0; $i < count($menu); $i++) { 
    echo'<li><a href="'.$url.$menu[$i]['id'].'" title="'.$menu[$i]["menu_name"].'">'. $menu[$i]["menu_name"] . '</a>'; 
    echo'<ul>'.$menu[$i]['childs'].'</ul></li>'; 
} 

MySQL查询:

SELECT 
    m.id, m.menu_name, GROUP_CONCAT(CONCAT("<li><a href=\"#\" id=\"",sm.id,"\">",sm.submenu_name,"</a></li>")) as childs 
FROM menu AS m 
LEFT JOIN submenu as sm on (m.id=sm.parent_id) 
GROUP BY m.id 
+0

谢谢!它的工作原理和解决我的查询! –

+0

我要添加的唯一的事情是,要么将一个变量分配给'count($ menu)',要么使用foreach循环,比如'foreach($ menu作为$ courseHeading)'有一个使php评估count函数的性能命中通过循环的时间 – Casey