其实我不建议一次展开所有树结构.
从程序性能上考虑.
逐层产生下一层结构比较合理,用户相应也不是太慢

解决方案 »

  1.   

    我也想这样做,我这样做只对数据库操作了一次,效果是做出来了的,我觉得也有一点慢,不过不知道怎么改善。
      

  2.   

    简要作了做,感觉还挺快的
    增加了一个字段status,表示是否叶节点
    <?
    define("enter",chr(13).chr(10));
    $conn=mysql_connect("localhost","root","");
    mysql_select_db("test",$conn);
    $sql="select * from category order by category_id";
    $query=mysql_query($sql);
    echo "<ul>".enter;
    $plen=1;
    while($arr=mysql_fetch_array($query)){
            $nlen=strlen($arr[category_id]);
    if($plen>$nlen){for(;$plen>$nlen;$plen-=2)echo "</ul>".enter;}
    if($arr[status]==1){
    echo '<li id="foldheader">'.$arr[category_name].'</li>'.enter;
    }else{
    echo '<li id="foldheader">'.$arr[category_name].'</li><ul id="foldinglist">'.enter;
    $plen+=2;
    }
    }
    for($i=0;$i<$plen-2;$i+=2)echo "</ul>";
    ?>效果如下:
    <ul>
    <li id="foldheader">货物类</li><ul id="foldinglist">
    <li id="foldheader">食物</li><ul id="foldinglist">
    </ul>
    <li id="foldheader">交通工具</li><ul id="foldinglist">
    <li id="foldheader">汽车</li><ul id="foldinglist">
    <li id="foldheader">轿车</li><ul id="foldinglist">
    <li id="foldheader">普通轿车</li>
    <li id="foldheader">高级轿车</li>
    </ul>
    <li id="foldheader">载客汽车</li><ul id="foldinglist">
    <li id="foldheader">旅行面包车</li>
    <li id="foldheader">公共汽车</li>
    </ul>
    </ul>
    <li id="foldheader">飞机</li><ul id="foldinglist">
    </ul>
    </ul>
    </ul>
    <li id="foldheader">房产类</li><ul id="foldinglist">
    </ul>
      

  3.   

    哇,这也太厉害了吧,真是佩服的五体投地了。
      

  4.   

    这算什么,秋水还有很多更让你佩服的....