• 技术文章 >php教程 >php手册

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

    2016-06-21 09:10:28原创380
    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 "href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],":";
    if (empty($path_gb[$i])) {
    break;
    }
    }

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

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

    echo "";

    //判断分类的状态
    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 "";
    //******** end ***********************

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

    echo "";

    echo "";

    $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 "";
    }
    }

    echo "
    ";
    for ($i=0;;$i++) {
    $a=$i+1;
    echo "href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],":";
    if (empty($path_gb[$i])) {
    break;
    }
    }
    echo "
    创建分类
    $type
    ";
    echo "$type";
    echo "
    ";
    endif; /* end showtype */
    .....
    .....
    ?>

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

    <全文完>



    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:quot result rout lt gt
    上一篇:中文注释的php.ini ( darkwings翻译 ) 下一篇:PHP3中文文档(续1)
    PHP编程就业班

    相关文章推荐

    • PHP生成GIF动态图片验证码• 在Yii2中使用Pjax导致Yii2内联脚本载入失败的问题,yii2pjax• php函数、类和对象以及类的封装、继承、类的静态方法、静态属性,php静态• php图片上传并生成缩略图效果• 从数组里塞选出重复的数据

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网