php的无限分类大致有三种方式。1.数据库利用父类ID做唯一索引,再利用函数的递归调用实现无限分类。2.数据库设计按照特定的格式排列,然后用mysql查询关键函数:concat。程序实现相对简单;3.第三个不太好理解。似乎是用算法和数据结构来安排的。今天主要分享第二种方法。一开始也发现了很多信息,真的很难理解。但是,我终于想通了,所以写下了我的短文,希望这篇文章能对大家有所帮助。一、数据库设计:。
复制代码如下:-表“category”的表结构-如果不存在则创建表` 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;-转储表“category ”-插入“category”(“id”、“catpath”、“name ”)值(1,“0”、“网站主页”)、(2,“0-1”、“Linux OS”)、(3,0-1”、“Apache server”)、(4,“0-1”、“MySQL数据库”)、(5,“0-1”、“PHP脚本语言”)、(6,“0-1-2”、“Linux系统教程”)、(7,“0”。Linux安全基金会'),(9,' 0-1-2-7 ',' Linux lamp ',(10,' 0-1-3-10 ',' Apache server ');在这里,catpath的-link符号不是固定的,所以可以选择,特殊符号等。二、PHP代码实现:复制代码如下: $ conn=MySQL _ connect(' localhost ',' root ',' ');mysql_select_db ('test ',$ conn);MySQL _ query(' set name UTF8 ');$sql='选择id,concat(catpath,'-',id)作为ab path,名称来自按ab path排序的类别';$ query=MySQL _ query($ SQL);while($ row=MySQL _ fetch _ array($ query)){/* * *第一个表示方法*//* $ space=str _ repeat('),count (explode ('-',$ row[' abpath ']))-1);回声$space。$row ['name']'br ';*//* * *第二种显示方法*/$ space=str _ repeat('),count (explode ('-',$ row[' abpath ']))-1);$选项。='选项值=' '。$row ['id']。''' .$空间。$row ['name']'/option ';} echo 'select name='opt ' '。$option。/select ';以上渲染图: 。
这里有几个要点需要注意:1。数据库的查询字段使用concat函数,未知点可以从google下载。2.第二个地方是php中的str_repeat被用来巧妙地设置空格。如有任何错误,请致电mail: [emailprotected]或留言。