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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
PHP中的integer类型使用分析
Jul 27 PHP
php去除字符串换行符示例分享
Feb 13 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
php数组去除空值函数分享
Feb 02 PHP
php模拟post提交数据的方法
Feb 12 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
PHP之密码加密的几种方式
Jul 29 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
Mar 12 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
PHP调用QQ互联接口实现QQ登录网站功能示例
Oct 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
php数据库连接
2006/10/09 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JavaScript 版本自动生成文章摘要
2008/07/23 Javascript
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
jQuery实现简洁的导航菜单效果
2015/11/23 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
Python实现提取文章摘要的方法
2015/04/21 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
2015年党员公开承诺事项
2015/04/27 职场文书
被委托人身份证明
2015/08/07 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Java实现带图形界面的聊天程序
2022/06/10 Java/Android