程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 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代碼:--------------------------------------------------------------------------------

<?
/* 數據庫連接 */
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代碼:--------------------------------------------------------------------------------

<?
/* 數據庫連接 */
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代碼:--------------------------------------------------------------------------------

<?
/* 數據庫連接 */
mysql_connect();
mysql_select_db('tree');
$sql = "insert into tree (topic,parentid) values('樹3-1',3);";
mysql_query($sql);
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved