解决方案 »

  1.   

    这个不一定,关键是构造出来的菜单结构要符合要求,也就是对$lists有要求
      

  2.   

    你参考下
    $list = array (
      array ('id' => '1','menuname' => '系统设置','parentid' => '0','sort' => '0',),
     array ('id' => '2','menuname' => '用户管理','parentid' => '0','sort' => '1',),
     array ('id' => '3','menuname' => '文章管理','parentid' => '0','sort' => '2',),
      array ('id' => '4','menuname' => '评论管理','parentid' => '0','sort' => '3',),
      array ('id' => '5','menuname' => '类别管理','parentid' => '0','sort' => '4',),
      array ('id' => '6','menuname' => '用户列表','parentid' => '1','sort' => '0',),
      array ('id' => '7','menuname' => '用户审核','parentid' => '2','sort' => '2',),
      array ('id' => '8','menuname' => '文章新增','parentid' => '3','sort' => '3',),
      array ('id' => '9','menuname' => '文章审核','parentid' => '3','sort' => '4',),
    );
    function tree(&$list,$parent_id,$deep){
    static $tree = array();
    foreach($list as $v){
    if($v['parentid'] == $parent_id){
    $v['sort'] = $deep;
    $tree[] = $v;
    tree($list,$v['id'],$deep+1);
    }
    }
    return $tree;
    }


    $result = tree($list,0,0); // 无限极分类
    echo '<pre>';print_r($result);
    echo '<pre>';
    foreach($result as $v){
    echo '|' . str_repeat('----',$v['sort']);
    echo $v['menuname'];
    echo '<br />';
    }
      

  3.   

    对于后台菜单,我是这么设计的,仅供参考
    $m  = M('menu');
    $pagedata  = $m->join('left join pagemenu on pagemenu.type = menu.id')->field('pagemenu.id,menu.menuname,pagemenu.pagename,pagemenu.type,pagemenu.pageurl')->select();
    $res=array();
    foreach($pagedata as $val){
    $res[$val['menuname']][]=$val;
    }
    $this->assign('res', $res);
    $this->display('left');tpl
    <volist name="res" id="vo" key="k">
            <dl>
                <dt>
                    {$key}
    </dt>
              <dd>
                  <ul>
                  <volist name="vo" id="v">
                    <li><a href="__APP__/{$v.pageurl}" target="mainFrame">{$v.pagename}</a>
                    
                    </li>
                    </volist>
                    
                  </ul>
               </dd>
               
            </dl>
            </volist>
      

  4.   

    html<ul id="menu">
    <volist name="list" id="vo"><if condition="$vo.parentid eq '0'">
    <li class="item"><a href="{$vo.URL}" target="mainFrame" class="title" name="{$vo.id}">{$vo.menuname}</a></li>
        <else />
         <volist name="vo.newchildmenu" id="rvo">
        <ul id="opt_{$rvo.childmenuid}" class="optiton">
        <li><a href="{$rvo.childmenuURL}" target="mainFrame">{$rvo.childmenuname}</a></li>
        </ul>
        </volist>
    </if>
    </volist>
    </ul>你的代码我参考一下,我还是先用我的吧,php代码,数据表结构,html我都发了,看能不能改成我的菜单结构:
    系统菜单
          |--管理员密码修改    
    留言查看
          |-查看所有留言
          |-审核留言
    菜单设置
          |-查看所有菜单
          |-添加菜单
          |-删除菜单
          |-编辑菜单现在的问题是管理员密码修改菜单能放入$lists数组中,位置正确,查看所有留言和审核留言就在$lists中放错位置