就是我上面这个图数据都分组了的点+ 可以弹出下面的分类点- 可以收缩相同的都分到不同的组里的  而且还有标题这些
问下这个有PHP怎么实现这种布局求方法 

解决方案 »

  1.   

    可有几种实现方式,我讲下思路:
    一、可先按一级菜单进行group by,取出二级菜单数,一级菜单的id及名称,再根据一级菜单的id取二级菜单列表,这种方法对数据库交互比较多
    二、可一次性把所有的菜单都取出来,然后用php进行处理(比如递归),这种只需访问数据库一次;比如
    $sorts=array(array('id'=>1,'pid'=>0,'name'=>'分类'),
    array('id'=>2,'pid'=>4,'name'=>'分类'),
    array('id'=>3,'pid'=>0,'name'=>'分类'),
    array('id'=>4,'pid'=>5,'name'=>'分类'),
    array('id'=>5,'pid'=>1,'name'=>'分类'),
    array('id'=>6,'pid'=>0,'name'=>'分类'),
    array('id'=>7,'pid'=>10,'name'=>'分类'),
    array('id'=>8,'pid'=>3,'name'=>'分类'),
    array('id'=>9,'pid'=>2,'name'=>'分类'),
    array('id'=>10,'pid'=>3,'name'=>'分类'),
    array('id'=>11,'pid'=>1,'name'=>'分类'));
    //对分类进行处理输出
    function get_sort_list($pid,$level){
    global $sorts;
    foreach($sorts as $key=>$sort){
    if($sort['pid']==$pid){//如果当前分类的pid等于要取的pid
    for($i=0;$i<$level;$i++){
    echo "----";
    }
    echo $sort['name']."<br/>";
    get_sort_list($sort['id'],$level+1);
    }
    }
    }
    get_sort_list(0,0);