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 09 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
php获取301跳转URL简单实例
Dec 16 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
PHP小技巧之函数重载
Jun 02 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
ThinkPHP行为扩展Behavior应用实例详解
Jul 22 PHP
微信开发之获取JSAPI TICKET
Jul 07 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 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 GD绘制24小时柱状图
2008/06/28 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
PHP实现验证码校验功能
2017/11/16 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
js判断用户是输入的地址请求的路径(实例讲解)
2017/07/18 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
python编码最佳实践之总结
2016/02/14 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
体育教师自荐信范文
2013/12/16 职场文书
小学教师师德感言
2014/02/10 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
学校领导四风问题整改措施思想汇报
2014/10/09 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
apache ftpserver搭建ftp服务器
2022/05/20 Servers