首页 > php基础 > php实现树状结构无级分类

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

转载随意^^请带上本文地址!

标签:none

发表留言