地区表取の样式问题~~~
现在数据库有3000多条记录
数据库结构是
id   pid    name    ctype
1     0     中国      0
2     1     湖北      1
3     1     北京      1
4     2     武汉      2
5     2     武昌区    3
6     3     东城区    2
...........数据库说明:
   id      数据id 这不说了吧
   pid    是隶属级的id,比如湖北属于中国,那么湖北 pid=中国的id
   name   是地区名
   ctype  是等级,共有 0,1,2,3,4    0是国家 1是省份   2是城市 以此类推哦
读取数据 页面上打印出以下样式
<li>
   <div>浙江</div>
    <ol>
        <li>
           <div>杭州</div>
              <ul>
                 <li>上城区< >
                 <li>下城区< >
                 <li>江干区< >
                 <li>西湖区< >
            </ul>
        </li>
        <li>宁波< >
        <li>绍兴< >
    </ol>
</li>
这个怎么做到啊谢谢大家!!

解决方案 »

  1.   

    其实就是个类似于无限级分类的东东,你这里的ctype其实没什么作用,可以不要,给你一个简单递归输出的函数,当然格式和你要求的有点区别,你可以试着改改,数据库的读取也要改改哦function get_category($category_pid=0,$category_level=1){
    global $mysql;
    $sql="select category_id,category_pid,category_name from categorys";
    if($category_pid==0){
    $sql.=" where category_pid=0";
    }else{
    $sql.=" where category_pid=$category_pid";
    }
    $sql.=" order by category_id asc";
    $mysql->query($sql);
    if($mysql->get_rows()){
    $result=$mysql->get_rows_array();
    foreach($result as $v){
    if($category_level==1){
    $k="  ";
    }else{
    for($i=1;$i<=$category_level;$i++){
    $k.="  ";
    }
    }
    $category=$k."L".$category_level.":".$v["category_name"]."<br/>";
    $category_pid=$v["category_id"];
    echo $category;
    get_category($category_pid,$category_level+1);
    }
    }
    }调用:get_category(0),列出所有分类
    这段代码的显示格式如下:L1:浙江
      L2:杭州
        L3:上城区
        L3:下城区
        L3:江干区
        L3:西湖区
      L2:宁波
      L2:绍兴
    L1:北京
    L1:重庆
      L2:渝北区
        L3:两路镇
          L4:空港开发区
      

  2.   

    ctype作用也是有,用来单独读取某一级别的名称。