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 相关文章推荐
escape unescape的php下的实现方法
Apr 27 PHP
php下HTTP Response中的Chunked编码实现方法
Nov 19 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
php中的常用魔术方法总结
Aug 02 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
php中socket通信机制实例详解
Jan 03 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
Yii2框架dropDownList下拉菜单用法实例分析
Jul 18 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
Dec 23 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 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
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
laravel学习笔记之模型事件的几种用法示例
2017/08/15 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
php扩展开发入门demo示例
2019/09/23 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
关于extjs treepanel复选框选中父节点与子节点的问题
2013/04/02 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
python中xrange和range的区别
2014/05/13 Python
实例讲解python函数式编程
2014/06/09 Python
Python中pygame安装方法图文详解
2015/11/11 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
python中添加模块导入路径的方法
2021/02/03 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
教职工代表大会主持词
2014/04/01 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js