樹型結構是很多程序會員會用到的,上面這款關於樹型結構操作類,很好的解決了這個問題哦。
/php教程 樹型結構操作類代碼
/***************************************************************
* 樹型結構操作類(如果可以寫成存儲過程最理想)
*
* ***************************************************************/
class treenode {
var $f_id = 'id';
var $f_pid = 'pid';
var $f_lft = 'lft';
var $f_rgt = 'rgt';
var $f_s = 'sequence';
var $f_level = 'lev';
var $f_child_num = 'child_num';
var $table;
var $db;
/**
* 構造函數
* @param string $table 表名
* @param object $dbhanle adodb數據庫教程操作句柄
*/
function treenode($table, $dbhandle) {
$this->db = $dbhandle;
$this->table = $table;
//$this->db->debug = true;
}
/**
* 增加子節點
* @param array $data 節點數據
* @return bool
*/
function addchild($data){
$pid = $data[$this->f_pid];
$sql = "select max({$this->f_s}) from {$this->table} where {$this->f_pid}=$pid";
$data[$this->f_s] = $this->db->getone($sql) + 1;//得到待插入節點的序號
$sql = "select * from {$this->table} where {$this->f_id} = -1";
$rs = $this->db->execute($sql);
$sql = $this->db->getinsertsql($rs, $data);
$this->db->execute($sql); //插入節點數據
if(!$this->db->affected_rows()){
return false;
}
$this->buildtree(1,1); //重建節點左右值
$this->updatelevel(1); //生成節點級數值
return true;
}
/**
* 修改節點的數據
* @param int $id 節點id號
* @param array $data 節點數據
* @return bool
*/1 2 3 4