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 常见郁闷问题答解
Nov 25 PHP
URL Rewrite的设置方法
Jan 02 PHP
测试您的 PHP 水平的题目
May 30 PHP
PHP Zip解压 文件在线解压缩的函数代码
May 26 PHP
php explode函数实例代码
Feb 27 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
微信小程序结合ThinkPHP5授权登陆后获取手机号
Nov 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和ACCESS写聊天室(三)
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
linux下删除7天前日志的代码(php+shell)
2011/01/02 PHP
php继承的一个应用
2011/09/06 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
JavaScript去除空格的几种方法
2006/10/03 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
js实现旋转木马轮播图效果
2020/01/10 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
[55:44]OG vs NAVI 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
Python入门篇之对象类型
2014/10/17 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
django中media媒体路径设置的步骤
2019/11/15 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
我爱我的祖国演讲稿
2014/05/04 职场文书
百日安全生产活动总结
2014/07/05 职场文书
教师党员整改措施
2014/10/24 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
教师求职自荐信
2015/03/26 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
2022/04/02 MySQL