這個是經過本人實踐確實可以使用的。
先說下表結構。一共三個欄位iclassid,iparentid,cclassname;
乙個是分類的id,乙個是父id,乙個是分類的名字,
下面是**:
<?php
class tree
$this->sortasc();
}//設定樹的節點
function setnode($id, $parent, $value)
/** 遞迴實現
* 得到id下的子樹結構陣列(用多維陣列格式來表示樹)
* id internet 節點id (0表示的是根節點,是虛擬的,即沒有與它對應的實際資訊)
* return array 子樹節點陣列
*/function getchildstree($id=0)
}return $childs;}/*
* 遞迴實現
* 得到id節點的所有後代節點
* $id
* return array 索引=>id,...一維陣列(順序important)
*/function getchilds($id=0)
return $childarray;}/*
* 得到id節點的孩子節點
* $id
* return array 索引=>id,...一維陣列
*/function getchild($id)
}return $childs;}/*
* 遞迴實現
* 反線獲得節點id的父節點
* $id interger 不可以為0
* return array 其父節點陣列
*/function getnodelever($id)
return $parents;}/*
* 根據所在層數得到n-1個前導格式化符號
* $id internet 不可以取0
* $prestr str 填充的格式化符號
* return str 多個格式化符號
*/function getlayer($id,$prestr='|-')
//得到id節點的資訊
function getvalue ($id)
/** id降序
*/function sortdes()
/** id公升序
*/function sortasc()
//下拉列表框樣式,
function select($cid = 0)
else
}return $this->view;
}//**樣式
function view()
return $this->view;
}//endallfunc所有函式結束
}?>
require("tree.php");
mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query('set names utf8');
$result = mysql_query("select * from t_class");
$data = array();
while ($row = mysql_fetch_array($result))
$t = new tree($data);
this->assign('class',$t->view());//**樣式,主要是用來編輯和刪除分類
$this->assign('sclass',$t->select($id));//這裡需要傳乙個父id,當編輯的時候,以便標識此分類所在的父分類為選中狀態,如果為0 則顯示的是分部分類
$this->display();
//**樣式
---根分類---
//下拉列表樣式
最終效果如圖:
[img]
[img]
這樣乙個無限分類
class m label foreach label as row row str substr row str,0,strlen row str 2 layer arr explode row layer colum label str new label foreach layer arr a...
乙個無限極分類的類(遞迴的思想)
無限極分類 類 header content type text html charset utf 8 class category return arr 組合多維陣列 static public function unlimitedforlayer cate,name child pid 0 re...
乙個好用的php 實現無限分類的方法
效果 計算機作業系統 linux 系統 linux相關 linuxpig.com linux.org windows 系統 探險 52risk.com 資料的儲存結構是這樣的 id,pid,name 解釋 id為自身編號,pid為父分類的編號 如果根則為0 name 為分類名稱 無限分類的思想 也就...