现在数据库有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>
这个怎么做到啊
谢谢大家!!
4 个解决方案
#1
其实就是个类似于无限级分类的东东,你这里的ctype其实没什么作用,可以不要,给你一个简单递归输出的函数,当然格式和你要求的有点区别,你可以试着改改,数据库的读取也要改改哦
调用:get_category(0),列出所有分类
这段代码的显示格式如下:
L1:浙江
L2:杭州
L3:上城区
L3:下城区
L3:江干区
L3:西湖区
L2:宁波
L2:绍兴
L1:北京
L1:重庆
L2:渝北区
L3:两路镇
L4:空港开发区
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作用也是有,用来单独读取某一级别的名称。
#3
没好办法,除非是有序的,
正常情况下应该是逆归出来
正常情况下应该是逆归出来
#4
楼主做的东西也是我做的,大型项目~
#1
其实就是个类似于无限级分类的东东,你这里的ctype其实没什么作用,可以不要,给你一个简单递归输出的函数,当然格式和你要求的有点区别,你可以试着改改,数据库的读取也要改改哦
调用:get_category(0),列出所有分类
这段代码的显示格式如下:
L1:浙江
L2:杭州
L3:上城区
L3:下城区
L3:江干区
L3:西湖区
L2:宁波
L2:绍兴
L1:北京
L1:重庆
L2:渝北区
L3:两路镇
L4:空港开发区
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作用也是有,用来单独读取某一级别的名称。
#3
没好办法,除非是有序的,
正常情况下应该是逆归出来
正常情况下应该是逆归出来
#4
楼主做的东西也是我做的,大型项目~