欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php实现树状结构无级分类

程序员文章站 2022-05-03 15:52:47
...
实现树状结构的两种方法
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代码:--------------------------------------------------------------------------------


/* 数据库连接 */
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("
    ");
    while($ra = mysql_fetch_row($rs)) {
    /* 显示记录标题 */
    echo('
  • '.$ra[0].'
  • ');
    /* 递归调用 */
    tree($ra[1]);
    }
    echo("
");
}
tree();
?>

--------------------------------------------------------------------------------


逆序树:

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("
    ");
    while($ra = mysql_fetch_row($rs)) {
    /* 显示记录标题 */
    echo('
  • '.$ra[0].'
  • ');
    /* 递归调用 */
    tree($ra[1]);
    }
    echo("
");
}
tree();
?>

--------------------------------------------------------------------------------


插入数据程序

PHP代码:--------------------------------------------------------------------------------


/* 数据库连接 */
mysql_connect();
mysql_select_db('tree');
$sql = "insert into tree (topic,parentid) values('树3-1',3);";
mysql_query($sql);
?>