PHP無制限クラス分類
6712 ワード
Layout:post title:[PHP無限レベル分類]date:2016-04-29 09:36:19+0800 comments:true categories:[HP]
PHP無制限クラス分類は主に2つの実現方式があり、再帰と全経路で実現する.
一、再帰実現
ID
pid
catename
cateorder
createtime
1
0
ニュース
0
0
2
0
画像
0
0
3
1
国内ニュース
0
0
4
1
国際ニュース
0
0
5
3
北京ニュース
0
0
6
4
アメリカニュース
0
0
7
2
ビューティ
0
0
8
2
風景写真
0
0
phpコード実装
二、全経路実現
phpコード実装
PHP無制限クラス分類は主に2つの実現方式があり、再帰と全経路で実現する.
一、再帰実現
:
ID
pid
catename
cateorder
createtime
1
0
ニュース
0
0
2
0
画像
0
0
3
1
国内ニュース
0
0
4
1
国際ニュース
0
0
5
3
北京ニュース
0
0
6
4
アメリカニュース
0
0
7
2
ビューティ
0
0
8
2
風景写真
0
0
create table deepcate
(
id int(10) unsigned not null auto_increment primary key,
pid int(11) unsigned not null,
catename varchar(30) not null,
cateorder int(11) unsigned default 0,
createtime int(10) not null
);
insert into deepcate(pid,catename,cateorder,createtime)values(0,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(0,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(1,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(1,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(3,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(4,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(2,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(2,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(7,' ',0,0);
insert into deepcate(pid,catename,cateorder,createtime)values(9,' AV',0,0);
select * from deepcate;
phpコード実装
";
foreach($rs as $v){
if($v['id']==$selected){
$selected="selected";
}
$str.="";
}
return $str.= "";
}
echo displayCate();
echo "
";
function getCatePath($cid,&$result){
$sql="SELECT * FROM deepcate WHERE id=$cid ";
$rs=mysql_query($sql);
$row=mysql_fetch_assoc($rs);
if($row){
$result[]=$row;
getCatePath($row['pid'],$result);
}
krsort($result);
return $result;
}
function displayCatePath($cid,$url="deepcate.php?cid="){
$res=getCatePath($cid,$result);
$str="";
foreach($res as $v){
$str.= "{$v['catename']}>>";
}return $str;
}
echo displayCatePath(10);
二、全経路実現
use imooc;
create table likecate
(
id int(11) not null auto_increment primary key,
path varchar(200) not null,
catename varchar(30) not null,
cateorder int(11) not null default 0,
createtime int(11) not null
);
insert into likecate(path,catename,cateorder,createtime)values('',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,2',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,2',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,5','andriod ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,5','ios ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,5','winphoto ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,2,4',' ',0,0);
insert into likecate(path,catename,cateorder,createtime)values('1,2,3',' ',0,0);
select * from likecate;
select id,catename,path,concat(path,',',id) as fullpath from likecate where 1 order by fullpath asc;
#
+----+--------------+-------+----------+
| id | catename | path | fullpath |
+----+--------------+-------+----------+
| 1 | | | ,1 |
| 2 | | 1 | 1,2 |
| 3 | | 1,2 | 1,2,3 |
| 10 | | 1,2,3 | 1,2,3,10 |
| 4 | | 1,2 | 1,2,4 |
| 9 | | 1,2,4 | 1,2,4,9 |
| 5 | | 1 | 1,5 |
| 6 | andriod | 1,5 | 1,5,6 |
| 7 | ios | 1,5 | 1,5,7 |
| 8 | winphoto | 1,5 | 1,5,8 |
+----+--------------+-------+----------+
phpコード実装
";
foreach($res as $v){
echo "";
}
echo "";
echo "
";
function getPathCate($cateid){
$sql="select *,concat(path,',',id)fullpath from likecate where id=$cateid";
$res=mysql_query($sql);
$row=mysql_fetch_assoc($res);
$ids=$row['fullpath'];
$sql="select * from likecate where id in($ids) order by id asc";
$res=mysql_query($sql);
$result=array();
while($row=mysql_fetch_assoc($res)){
$result[]=$row;
}
return $result;
}
function displayCatePath($cateid,$link='likecate.php?cid='){
$res=getPathCate($cateid);
$str="";
foreach($res as $v){
$str.="{$v['catename']}>";
}
return $str;
}
echo displayCatePath(4,'likecate.php?p=1&cid=');