• 1 where orders > $orders”;mysql_query;/* 插入记录 */$sql =
    “insert into tree2 (rootid,parentid,orders,layer,topic) values
    ($rootid,$parentid,”..”,”..”,’树2-1-1-2′)”;mysql_query;?>

实现树状结构的两种方法1。递归法递归是指在函数中显式的调用它自身。利用递归法实现树状结构的特点是写入数据速度较快,显示速度较慢。适用与写入数据量大,树的结构复杂的情况下。数据结构代码:——————————————————————————–CREATE
TABLE `tree1` unsigned NOT NULL auto_increment,`parentid` tinyint
unsigned NOT NULL default ‘0’,`topic` varchar default NULL,PRIMARY
KEY,KEY `parentid` TYPE=MyISAM;INSERT INTO `tree1` (`id`,
`parentid`, `topic`) VALUES
,,,,,,,,,,;——————————————————————————–字段说明id,记录的id号parentid,记录的父记录idtopic,记录的显示标题显示程序顺序树:PHP代码:——————————————————————————–/*
数据库连接 */mysql_connect();mysql_select_db;/* 树状显示的递归函数
*/function tree { /*执行sql查询,获取记录的标题和id*/ $sql = “select
topic,id from tree1 where parentid = $parentid order by id asc”; $rs =
mysql_query; /* 缩进*/ echo; while($ra = mysql_fetch_row { /*
显示记录标题 */ echo(‘

‘.$ra[0].’

‘); /* 递归调用 */ tree; }
echo;?>——————————————————————————–逆序树:PHP代码:——————————————————————————–/*
数据库连接 */mysql_connect();mysql_select_db;/* 树状显示的递归函数
*/function tree { /*执行sql查询,获取记录的标题和id*/ $sql = “select
topic,id from tree1 where parentid = $parentid order by id desc”; $rs =
mysql_query; /* 缩进*/ echo; while($ra = mysql_fetch_row { /*
显示记录标题 */ echo(‘

‘.$ra[0].’

‘); /* 递归调用 */ tree; }
echo;?>——————————————————————————–插入数据程序PHP代码:——————————————————————————–/*
数据库连接 */mysql_connect();mysql_select_db;$sql = “insert into
tree
values;”;mysql_query;?>——————————————————————————–2。排序字段法此方法是通过在数据结构中增加一个标志记录在整个树中的顺序位置的字段来实现的。特点是显示速度和效率高。但在单个树的结构复杂的情况下,数据写入效率有所不足。而且顺序排列时候,插入,删除记录的算法过于复杂,故通常用逆序排列。数据结构代码:——————————————————————————–CREATE
TABLE `tree2` unsigned NOT NULL auto_increment,`parentid` tinyint
unsigned NOT NULL default ‘0’,`rootid` tinyint unsigned NOT NULL
default ‘0’,`layer` tinyint unsigned NOT NULL default ‘0’,`orders`
tinyint unsigned NOT NULL default ‘0’,`topic` varchar default
NULL,PRIMARY KEY,KEY `parentid` ,KEY `rootid` TYPE=MyISAMINSERT INTO
`tree2` (`id`, `parentid`, `rootid`, `layer`, `orders`,
`topic`) VALUES
,,,,,,,,,,,(12,11,1,3,6,’树1-1-1-1′);——————————————————————————–显示程序PHP代码:——————————————————————————–/*
数据库连接 */mysql_connect();mysql_select_db;/* 选出所有根记录id
*/$sql = “select id from tree2 where parentid = 0 order by id desc”;$rs
= mysql_query;$lay = 0;while($ra = mysql_fetch_row; /*
选出此树所有记录,并按orders字段排序 */ $sql = “select topic,layer from
tree2 where rootid = $ra[0] order by orders”; $rs1 = mysql_query;
while($ra1 = mysql_fetch_row { /* 缩进显示 */ if { echo(str_repeat;
}elseif { echo(str_repeat); } /* 记录显示 */ //echo; echo; $lay =
$ra1[1]; }
echo;}echo;?>——————————————————————————–插入数据程序PHP代码:——————————————————————————–/*
数据库连接 */mysql_connect();mysql_select_db;/* 插入根记录 */$sql
= “insert into tree2 “;mysql_query;$sql = “update tree2 set rootid = id
where id = “.mysql_insert_id;/* 插入子记录 */$parentid =
5;//父记录id/* 取出 根记录id,父记录缩进层次,父记录顺序位置 */$sql =
“select rootid,layer,orders from tree2 where id =
$parentid”;list($rootid,$layer,$orders) = mysql_fetch_row;/*
更新插入位置后记录的orders值 */$sql = “update tree2 set orders = orders

发表评论

电子邮件地址不会被公开。 必填项已用*标注