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

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

WBOY
WBOYOriginal
2016-06-06 20:20:161162Durchsuche

这篇文章主要介绍了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是数据库操作类,此方法简单明了!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn