频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛
PHP开发资源网 主页>>开发技巧>> 收藏此文 | 收藏本站 | 设为首页

php 进阶:实现无限分类(4)

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-7-26 20:27:36 进入讨论组
关 键 词: 分类 无限 实现 echo result type path_gb rout_char

4.路径跟踪
------------------------------------------------------------
前面已经介绍过了分类的创建实现方法,在分类表里记载了 rout_id 和 rout_char 这两个存储分类路径的信息,在不做任何处理的情况下,程序只能够顺序下到最底层的分类而无法倒退(当然可利用浏览器的 back 键倒退,但这对程序来说是不完整的),因此必须将 rout_id 和 rout_char 的信息分解出来完成实在的路径指示.

具体的做法,假如数据库记载了这么一条分类信息:

id:4
uid:2
type:开发工具
rout_id:0:1:2:4
rout_char:系统:linux:开发工具

当程序走到分类'开发工具'上时,除了要求显示路径信息外还要求能够去到路径上的任一分类中,该怎么做能?这里就需要用到 explode() 函数了.因为 rout_id 和 rout_char 是对应关系的,所以可将它们分解:

$path=explode(":",$rout_id);
$path_gb=explode(":",$rout_char);

这时所有分类信息都被分解了,现在要做的就是以链接的方式还原路径信息:

for ($i=0;;$i++) {
$a=$i+1;
echo "<a
href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],"</a>:";
if (empty($path_gb[$i])) {
break;
}
}

上面这段代码就实现了加链接还原路径的功能,因为实现的是无限分类,因此是没有上限的,所以在 for($i=0;;$i++) 里没有范围限制,而设置循环退出的条件是 $path_gb[$i] 中的值为空,将这段代码插入类别显示版面的程序块内就行了:

<?
.....
.....
//显示分类************************************************
if ($func=='showtype'):

echo "<table>";

//判断分类的状态
if ($uid!=0) {
$result=mysql_query("select * from type where id=$uid");
$type=mysql_result($result,0,"type");

//******** 新加入的代码 ***************
$rout_id=mysql_result($result,0,"rout_id");
$rout_char=mysql_result($result,0,"rout_char");
$path=explode(":",$rout_id);
$path_gb=explode(":",$rout_char);
echo "<tr><td>";
for ($i=0;;$i++) {
$a=$i+1;
echo "<a
href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],"</a>:";
if (empty($path_gb[$i])) {
break;
}
}
echo "</td></tr>";
//******** end ***********************

} else {
$type='父分类';
}

echo "<tr><td><a href='$php_self?func=createtype&uid=$uid'>创建分类</a></td></tr>";

echo "<tr><td>$type</td></tr>";

$result=mysql_query("select * from type where uid=$uid");
$num=mysql_numrows($result);

if (!empty($num)) {
for ($i=0;$i<$num;$i++) {

$id=mysql_result($result,$i,"id");
$type=mysql_result($result,$i,"type");

echo "<tr><td>";
echo "<a href='$php_self?func=showtype&uid=$id'>$type</a>";
echo "</td></tr>";
}
}

echo "</table>";
endif; /* end showtype */
.....
.....
?>

完成这个功能块后,就可继续分类信息的显示实现了...

<全文完>
欢迎进入PHP开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱