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
转载随意^^请带上本文地址!