PHP 无限分类三种方式 非函数的递归调用!


Posted in PHP onAugust 26, 2011

php无限分类大致有三种方式,

1、数据库通过设置父类ID来进行唯一索引,然后使用函数的递归调用实现无限分类;

2、数据库设计通过特定格式进行排列,然后使用mysql查询关键函数:concat。程序实现比较简单;

3、第三种不是太了解, 好像要使用到算法和数据结构进行排列。

今天我主要分享下第二种方式,一开始也是找了很多资料,确实比较难理解。不过最终还是给搞明白了,因此记下随笔,希望通过这篇文章能够帮助到大家。

一、数据库设计:

PHP 无限分类三种方式 非函数的递归调用!

-- 
-- Table structure for table `category` 
-- 
CREATE TABLE IF NOT EXISTS `category` ( 
`id` int(11) NOT NULL AUTO_INCREMENT, 
`catpath` varchar(255) DEFAULT NULL, 
`name` varchar(255) DEFAULT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ; 
-- 
-- Dumping data for table `category` 
-- 
INSERT INTO `category` (`id`, `catpath`, `name`) VALUES 
(1, '0', '网站首页'), 
(2, '0-1', 'Linux OS'), 
(3, '0-1', 'Apache服务器'), 
(4, '0-1', 'MySQL数据库'), 
(5, '0-1', 'PHP脚本语言'), 
(6, '0-1-2', 'Linux 系统教程'), 
(7, '0-1-2', 'Linux 网络技术'), 
(8, '0-1-2', 'Linux 安全基础'), 
(9, '0-1-2-7', 'Linux LAMP'), 
(10, '0-1-3-10', 'apache Server');

这里说明下,catpath的-链接符号不是固定的,可以选择,;等特殊符号。
二、 PHP代码实现:
$conn = mysql_connect ( 'localhost', 'root', '' ); 
mysql_select_db ( 'test', $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'] . '<br>';*/ 
/** 
* 第二种展示方法 
*/ 
$space = str_repeat ( '    ', count ( explode ( '-', $row ['abspath'] ) ) - 1 ); 
$option .= '<option value="' . $row ['id'] . '">' . $space . $row ['name'] . '</option>'; 
} 
echo '<select name="opt">' . $option . '</select>';

上效果图:

PHP 无限分类三种方式 非函数的递归调用!

这里有几个关键的地方需要注意下:
 1、在数据库查询字段是用了concat函数,不了解的地方可以google下。 
 2、第二个地方主要是用到了php中的str_repeat巧妙的设置了空格。
有错误之处,望mail: chenghuiyong1987@gmail.com或者留言

PHP 相关文章推荐
php数据库连接
Oct 09 PHP
基于mysql的bbs设计(四)
Oct 09 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
php批量上传的实现代码
Jun 09 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
cakephp打印sql语句的方法
Feb 13 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 #PHP
PHP数组实例总结与说明
Aug 23 #PHP
JpGraph php柱状图使用介绍
Aug 23 #PHP
php报表之jpgraph柱状图实例代码
Aug 22 #PHP
PHP用SAX解析XML的实现代码与问题分析
Aug 22 #PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 #PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 #PHP
You might like
基于mysql的论坛(4)
2006/10/09 PHP
IIS6的PHP最佳配置方法
2007/03/19 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
决策树的python实现方法
2014/11/18 Python
python实现猜拳游戏项目
2020/11/30 Python
python 调整图片亮度的示例
2020/12/03 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
自荐信的基本格式
2014/02/22 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL