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 和 MYSQL
Oct 09 PHP
深入了解php4(1)--回到未来
Oct 09 PHP
一个简单的PHP&amp;MYSQL留言板源码
Jul 19 PHP
PHP 地址栏信息的获取代码
Jan 07 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
php生成年月日下载列表的方法
Apr 24 PHP
微信随机生成红包金额算法php版
Jul 21 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
2018/04/18 Python
python re模块的高级用法详解
2018/06/06 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
在django中,关于session的通用设置方法
2019/08/06 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
Django跨域请求原理及实现代码
2020/11/14 Python
时尚孕妇装:HATCH Collection
2019/09/24 全球购物
六十岁生日答谢词
2014/01/10 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
认识深刻的检讨书
2014/02/16 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
小学教师节活动总结
2015/03/20 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python