php实现树状结构无级分类
实现树状结构的两种方法
1。递归法
递归是指在函数中显式的调用它自身。
利用递归法实现树状结构的特点是写入数据速度较快,显示速度较慢(在树的分支/层次较多的情况下尤其明显)。适用与写入数据量大,树的结构复杂的情况下。
数据结构(以mysql为例)
代码:--------------------------------------------------------------------------------
CREATE TABLE `tree1` ( `id` tinyint(3) unsigned NOT NULL auto_increment, `parentid` tinyint(3) unsigned NOT NULL default '0', `topic` varchar(50) default NULL, PRIMARY KEY (`id`), KEY `parentid` (`parentid`) ) TYPE=MyISAM; INSERT INTO `tree1` (`id`, `parentid`, `topic`) VALUES (1,0,'树1'), (2,0,'树2'), (3,0,'树3'), (4,2,'树2-1'), (5,4,'树2-1-1'), (6,2,'树2-2'), (7,1,'树1-1'), (8,1,'树1-2'), (9,1,'树1-3'), (10,8,'树1-2-1'), (11,7,'树1-1-1'), (12,11,'树1-1-1-1');
--------------------------------------------------------------------------------
字段说明
id,记录的id号
parentid,记录的父记录id(为0则为根记录)
topic,记录的显示标题
显示程序
顺序树:
PHP代码:--------------------------------------------------------------------------------
<?php /* 数据库连接 */ mysql_connect(); mysql_select_db('tree'); /* 树状显示的递归函数 */ function tree($parentid = 0) { /*执行sql查询,获取记录的标题和id*/ $sql = "select topic,id from tree1 where parentid = $parentid order by id asc"; $rs = mysql_query($sql); /* 缩进*/ echo ("<ul>"); while ($ra = mysql_fetch_row($rs)) { /* 显示记录标题 */ echo ('<li>' . $ra[0] . '</li>'); /* 递归调用 */ tree($ra[1]); } echo ("</ul>"); } tree(); ?>
--------------------------------------------------------------------------------
逆序树:
PHP代码:--------------------------------------------------------------------------------
<?php /* 数据库连接 */ mysql_connect(); mysql_select_db('tree'); /* 树状显示的递归函数 */ function tree($parentid = 0) { /*执行sql查询,获取记录的标题和id*/ $sql = "select topic,id from tree1 where parentid = $parentid order by id desc"; $rs = mysql_query($sql); /* 缩进*/ echo ("<ul>"); while ($ra = mysql_fetch_row($rs)) { /* 显示记录标题 */ echo ('<li>' . $ra[0] . '</li>'); /* 递归调用 */ tree($ra[1]); } echo ("</ul>"); } tree(); ?>
--------------------------------------------------------------------------------
插入数据程序
PHP代码:--------------------------------------------------------------------------------
<?php /* 数据库连接 */ mysql_connect(); mysql_select_db('tree'); $sql = "insert into tree (topic,parentid) values('树3-1',3);"; mysql_query($sql); ?>
文章地址:http://www.phprm.com/base/eb85ea3387d0756c942fd815ab238618.html
转载随意^^请带上本文地址!