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

2015-01-24信息快讯网

今天分享下自己学习细说php中的无限分类方法。学习php的朋友可以参考下。

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上传apk后自动提取apk包信息的使用(示例下载)
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Eclipse中php插件安装及Xdebug配置的使用详解
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
PHP笔记之:日期函数的使用介绍
『PHP』PHP截断函数mb_substr()使用介绍
PHP header()函数使用详细(301、404等错误设置)
关于PHP的相似度计算函数:levenshtein的使用介绍
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
PHP重定向的3种方式
用PHP编写和读取XML的几种方式
PHP合并两个数组的两种方式的异同
PHP中数组的三种排序方法分享
php重定向的三种方法分享
php使用Smarty的相关注意事项及访问变量的几种方式
比较简单实用的PHP无限分类源码分享(思路不错)
php图片上传存储源码并且可以预览
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
PHP数组实例总结与说明
JpGraph php柱状图使用介绍
php报表之jpgraph柱状图实例代码
PHP用SAX解析XML的实现代码与问题分析
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
PHP版国家代码、缩写查询函数代码
php中使用Curl、socket、file_get_contents三种方法POST提交数据
PHP简洁函数小结
php中计算中文字符串长度、截取中文字符串的函数代码
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
php生成随机密码的三种方法小结
php include加载文件两种方式效率比较
php递归实现无限分类生成下拉列表的函数
php用数组返回无限分类的列表数据的代码
删除无限分类并同时删除它下面的所有子分类的方法
©2014-2024 dbsqp.com