根据类别生成无序列表

时间:2011-02-15 05:35:36

标签: php mysql menu drop-down-menu

我需要从类别表中填充无序列表。

类: 0 - >代表父类别。

id name parent 1 n1 0 2 n2 1 3 n3 2 4 n4 3 5 n5 1 6 n6 0 ........

我尝试使用以下内容:

$ menu_array是包含categories表作为关联数组的数组。

while ( $row = mysql_fetch_assoc($query) ) {  
        $menu_array[$row['id']] = array('name' => $row['name'],'parent' => $row['parent']);  
}   


function generate_menu($parent)  
{  

  //this prevents printing 'ul' if we don't have subcategories for this category  
        $has_childs = false;   
//use global array variable instead of a local variable to lower stack memory requierment    
        global $menu_array;  
        foreach($menu_array as $key => $value)  
        {  
                if ($value['parent'] == $parent)   
                {         
                        //if this is the first child print '<ul>'                         
                        if ($has_childs === false)  
                        {  
          //don't print '<ul>' multiple times                               
                             $has_childs = true;  
                                echo '<ul>';  
                        }  
echo '< li>< a href="/category/' . $value['name'] . '/">' . $value['name'] . '< /a>';  
                        generate_menu($key);  
//call function again to generate nested list for subcategories belonging to this category  
                       echo '< /li>';  
                }  
        }  
        if ($has_childs === true) echo '< /ul>';  
}    

在服务器上运行上面的代码时,我得到html输出(查看源代码):
    &LT; UL&GT;
        &LT;立GT;
            &LT; a href =“#”&gt;网站模板&lt; / A&GT;
            &LT; UL&GT;
                &LT;立GT;&LT; a href =“#”&gt;广告素材&lt; / A&GT;
                       &LT; UL&GT;
                           &LT;立GT;&LT; a href =“#”&gt;投资组合&lt; / A&GT;&LT; /立GT;
                           &LT;立GT;&LT; a href =“#”&gt;摄影&lt; / A&GT;&LT; /立GT;
                           &LT;立GT;&LT; a href =“#”&gt; Art&lt; /立GT;
                       &LT; / UL&GT;
                &LT; /立GT;
    .....

I want to get like:   
< ul id="jsddm">  
    < li>< a href="#">Parent Category 1< /a>  
        < ul>  
            < li><a href="#">Sub Category 1 - 1< /a>< /li>  
            < li><a href="#">Sub Category 2 - 1< /a>< /li>  
            < li><a href="#">Sub Category 3 - 1< /a>< /li>  
        < /ul>  
    </ li>      
        < li><a href="#">Parent Category 2< /a>< /li>     
< /ul>    

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)


  我得到了自己的问题的答案。我试图实现多级下拉,但使用单个下拉列表。感谢您的评论。

答案 1 :(得分:0)

你必须正确阅读这个 jQuery UI TAB