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中的Class的几点个人看法
Oct 09 PHP
PHP学习资料汇总与网址
Mar 16 PHP
php中simplexml_load_string使用实例分享
Feb 13 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
php简单获取复选框值的方法
May 11 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
Yii实现文章列表置顶功能示例
Oct 18 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
laravel5实现微信第三方登录功能
Dec 06 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 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
如何在PHP中进行身份认证
2006/10/09 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
jquery ready函数源代码研究
2009/12/06 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
js 获取input点选按钮的值的方法
2014/04/14 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
基于vue2实现左滑删除功能
2017/11/28 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
用python标准库difflib比较两份文件的异同详解
2018/11/16 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
行政助理求职自荐信
2013/10/26 职场文书
感恩节活动方案
2014/01/27 职场文书
售后客服工作职责
2014/06/16 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
新员工考核评语
2014/12/31 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
解除租赁合同协议书
2016/03/21 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
深入解析MySQL索引数据结构
2021/10/16 MySQL
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
vue 给数组添加新对象并赋值
2022/04/20 Vue.js