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 相关文章推荐
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
php 文本文件的读取效率
Feb 10 PHP
php事务处理实例详解
Jul 11 PHP
PHP中require和include路径问题详解
Dec 25 PHP
PHP+AJAX实现投票功能的方法
Sep 28 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
May 16 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
详细解读php的命名空间(二)
Feb 21 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 PHP
thinkphp5 路由分发原理
Mar 18 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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php使用google地图应用实例
2014/12/31 PHP
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
jQuery操作DOM之获取表单控件的值
2015/01/23 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
分享一道关于闭包、bind和this的面试题
2017/02/20 Javascript
JS判断非空至少输入两个字符的简单实现方法
2017/06/23 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
JS实现的类似微信聊天效果示例
2019/01/29 Javascript
Angular2实现的秒表及改良版示例
2019/05/10 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
[03:19]2016国际邀请赛中国区预选赛第四日TOP10镜头集锦
2016/07/01 DOTA
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
幼儿园教师请假制度
2014/01/16 职场文书
人事经理岗位职责
2014/04/28 职场文书
酒店节能减排方案
2014/05/26 职场文书
小学班级特色活动方案
2014/08/31 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
Python 中的Sympy详细使用
2021/08/07 Python
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript