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部分常见问题总结
Mar 27 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 PHP
Laravel中的chunk组块结果集处理与注意问题
Aug 15 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 PHP
TP5框架页面跳转样式操作示例
Apr 05 PHP
TP5框架实现签到功能的方法分析
Apr 05 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
咖啡常见的种类
2021/03/03 新手入门
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
linux下编译安装memcached服务
2014/08/03 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Python饼状图的绘制实例
2019/01/15 Python
python批量解压zip文件的方法
2019/08/20 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Django URL参数Template反向解析
2020/11/24 Python
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
中学生班主任评语
2014/01/30 职场文书
2014信息公开实施方案
2014/02/22 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
感恩的心主题班会
2015/08/12 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
担保书怎么写 ?
2019/04/22 职场文书