Home > php教程 > php手册 > php+mysql不用递归实现的无限级分类实例(非递归)

php+mysql不用递归实现的无限级分类实例(非递归)

WBOY
Release: 2016-06-06 20:20:16
Original
1189 people have browsed it

这篇文章主要介绍了php+mysql不用递归实现的无限级分类实例,重点在不使用递归,需要的朋友可以参考下

要实现无限级分类,递归一般是第一个也是最容易想到的,但是递归一般被认为占用资源的方法,所以很多系统是不考虑使用递归的
本文还是通过数据库的设计,用一句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,

无限级分类操作代码:

Query($sql); while($rows=$nbs->fetch_array($result)){ if(substr_count($rows['path'],',')>2){ for($i=0;$i'; } ?> $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'] . '
'; } echo $option; exit(); echo '';

其中$nbs是数据库操作类,此方法简单明了!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template