show submenu in <option> PHP


show submenu in <option> PHP

我的菜单有两个表,第一个是main_menu,第二个是sub_menu。在我的主菜单中,我有两个字段id和catname,在子菜单表中我有三个字段pare_id和parentname和iden(自动递增)。

在这张照片中,我加入了表格:查询结果http://upload7.ir/imgs/2014-10/64888235604214323477.png

我想在<select>标签中显示这个查询结果(对于每个猫名),例如:

<select>
    <BR><BR>
    <optgroup=catname>
        <BR>
        <option value='iden'>
            parentname
        </option>
        <BR>
    </optgroup>
    <BR><BR>
</select><BR>

我尝试将整个查询结果放入数组中

$query = $db->query("SELECT mainmenu.id ,mainmenu.catname , submenu.parent_id , submenu.parentname , submenu.iden FROM mainmenu INNER JOIN submenu ON mainmenu.id = submenu.parent_id");
if($query->rowCount() >= 1){
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        $rows [] = $row;
         $submenu = array_column($rows,'catname');
    }
     $catname = array_unique($submenu);
    <select>
    <?php
        foreach ($catname as $cat) {
            echo "<optgroup label=$cat>";
                foreach ($rows as $row) {
                    echo "<option>" .$row['parentname']."</option>";
                }
            echo "</optgroup>";
        }
    ?>
</select>
}

但我不知道怎么做!!请帮帮我。我想在一个查询中做到这一点,这对我来说非常重要

完成。。

$query = $db->query("SELECT mainmenu.id ,mainmenu.catname , submenu.parent_id , submenu.parentname , submenu.iden FROM mainmenu INNER JOIN submenu ON mainmenu.id = submenu.parent_id");
$menu = array(); 
if($query->rowCount() >= 1){ 
    #Created a custom multidimensional array
    while (list( $cat_id, $catname, $parent_id, $parentname, $iden) = $query -> fetch(PDO::FETCH_NUM)) { 
        $menu[$catname][$iden] = $parentname; # The values $cat_id and $parent_id is not used
    }
    #Created the <select> list with <optgroup> from the Custom multidimensional array
    echo '<select>';
    foreach ($menu as $k1 => $v1){ 
        echo '<optgroup label = "'. $k1 .'">'; 
            foreach ($v1 as $k2  => $v2){ 
                echo '<option value = "' . $k2 . '">'. $v2 . '</option>';
            }
        echo '</optgroup>';
    }
    echo '</select>'; 
}

下一次,尽量只从SQL查询中选择所需的值,以避免头疼。

谢谢:)我修复了它,这是我的代码

$query = $db->query("SELECT mainmenu.id ,mainmenu.catname , submenu.parent_id , submenu.parentname , submenu.iden FROM mainmenu INNER JOIN submenu ON mainmenu.id = submenu.parent_id");
if($query->rowCount() >= 1){
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        $rows [] = $row;
    }
    echo '<pre>',print_r($rows),'</pre>';
    $parent_id = array_column($rows,'parent_id');
    $submenu = array_column($rows,'catname');
}
 $catname = array_unique($submenu);
foreach ($catname as $c) {
     $cc [] = $c;
 }
 print_r($cc);
?>


<select>
    <?php 
     $i= 1;
    foreach ($cc as $res) {           
        echo "<optgroup label=$res>";
        foreach ($rows as $row) {
            if($row['parent_id'] == $i){
                echo "<option value=".$row['iden'].">".$row['parentname']. "</option>";
            }
        }
    echo "</optgroup>";
    $i++;
    }
    ?>
</select>