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数据流应用的简单例子
Jun 01 PHP
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
destoon常用的安全设置概述
Jun 21 PHP
php中memcache 基本操作实例
May 17 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
php对象工厂类完整示例
Aug 09 PHP
php时间戳转换代码详解
Aug 04 PHP
tp5框架的增删改查操作示例
Oct 31 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防注入代码
2010/04/07 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
简单通用的JS滑动门代码
2008/12/19 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
js function定义函数使用心得
2010/04/15 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
微信小程序实现顶部下拉菜单栏
2018/11/04 Javascript
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
python 基础教程之Map使用方法
2017/01/17 Python
Python基于matplotlib绘制栈式直方图的方法示例
2017/08/09 Python
python实现按长宽比缩放图片
2018/06/07 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
python 实现弹球游戏的示例代码
2020/11/17 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
外贸业务员工作职责
2014/01/06 职场文书
小学敬老月活动方案
2014/02/11 职场文书
品质标语大全
2014/06/21 职场文书
Python爬虫实战之爬取京东商品数据并实实现数据可视化
2021/06/07 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏