0

PHP の対応する親項目の下にすべての子メニュー項目を表示する必要があります。mysql クエリを作成しましたが、親アイテムの下にあるすべての子アイテムを取得できません。コードは次のとおりです。

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 | 

したがって、Courses の下に Course-1 と course 2 が必要です。PHPコードのどこが間違っているのか教えてください。

4

1 に答える 1

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
于 2013-10-07T05:37:33.973 に答える