php+mysql不用递归实现的无限级分类实例(非递归)


Posted in PHP onJuly 08, 2014

要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的
本文还是通过数据库的设计,用一句sql语句实现
数据库字段大概如下:

id 编号

fid 父分类编号

class_name 分类名

path 分类路径,以 id 为节点,组成类似 ,1,2,3,4, 这样的字符串

可以假设有如下的数据:

id fid class_name path

1  0       分类1 ,       1,

2  0       分类2 ,       2,

3  1       分类1-1 ,    1,3,

4  1       分类1-2 ,    1,4,

5  2       分类2-1 ,    2,5,

6  4       分类1-2-1 , 1,4,6,

无限级分类操作代码:

<?php   
$sql=”SELECT * FROM tree order by path”;  
$result=$nbs->Query($sql);  
while($rows=$nbs->fetch_array($result)){  
  if(substr_count($rows['path'],',')>2){  
    for($i=0;$i<(substr_count($rows['path'],',')-2);$i++)  
      echo ‘ ‘;  
  }  
  echo $rows['class_name'].'<br>';  
}  
?>  

$conn = mysql_connect ( 'localhost', 'root', 'root' );
mysql_select_db ( 'wanggou123', $conn );
mysql_query ( 'set names UTF8' );
$sql = "select id,concat(catpath,'-',id) as abspath,name from category order by abspath";
 
$query = mysql_query ( $sql );
while ( $row=mysql_fetch_array($query)) {
  /**
  * 第一种展示方法
*/
/*$space = str_repeat ( '    ', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
echo $space . $row ['name'] . '
';*/
/**
 第二种展示方法
*/
$space = str_repeat ( '——', count ( explode ( '-', $row ['abspath'] ) ) - 1 );
$option .= '' . $space . $row ['name'] . '<Br>';
}
echo $option;
exit();
echo '<select name="opt">' . $option . '</select>';

其中$nbs是数据库操作类,此方法简单明了!

PHP 相关文章推荐
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
php下封装较好的数字分页方法
Nov 23 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
解析crontab php自动运行的方法
Jun 24 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php模拟post提交数据的方法
Feb 12 PHP
PHP+MySQL实现的简单投票系统实例
Feb 24 PHP
PHP类型约束用法示例
Sep 28 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 PHP
PHP生成短网址的3种方法代码实例
Jul 08 #PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 #PHP
php中函数前加&amp;符号的作用分解
Jul 08 #PHP
PHP实现的连贯操作、链式操作实例
Jul 08 #PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 #PHP
PHP的魔术常量__METHOD__简介
Jul 08 #PHP
PHP中的插件机制原理和实例
Jul 08 #PHP
You might like
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
玩转虚拟域名◎+ .
2006/10/09 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
PDO::prepare讲解
2019/01/29 PHP
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
js实现3d悬浮效果
2017/02/16 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Django--权限Permissions的例子
2019/08/28 Python
python 发送json数据操作实例分析
2019/10/15 Python
python实现名片管理器的示例代码
2019/12/17 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
python 用struct模块解决黏包问题
2020/11/07 Python
链表面试题-一个链表的结点结构
2015/05/04 面试题
银行会计职员个人的自我评价
2013/09/29 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
奥利奥广告词
2014/03/20 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
单位租房协议书样本
2014/10/30 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
2015年司机工作总结
2015/04/23 职场文书
入团介绍人意见范文
2015/06/04 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书