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获取某个目录大小的代码
Sep 10 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
PHP动态规划解决0-1背包问题实例分析
Mar 23 PHP
PHP7.0安装笔记整理
Aug 28 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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简单系统查询模块代码打包下载
2008/06/07 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
简述php环境搭建与配置
2016/12/05 PHP
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
jquery的ajax跨域请求原理和示例
2014/05/08 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
Python List cmp()知识点总结
2019/02/18 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
关于Python3 类方法、静态方法新解
2019/08/30 Python
python中的yield from语法快速学习
2020/11/06 Python
移动端HTML5 input常见问题(小结)
2020/09/28 HTML / CSS
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
小学生暑假感言
2014/02/06 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
MySQL基于索引的压力测试的实现
2021/11/07 MySQL