ツリー構造は多くのプログラム メンバーで使用されており、上記のツリー構造操作クラスはこの問題をうまく解決します。
/phpチュートリアルツリー構造操作コード
/*************************************************** * *************
* 木構造操作クラス(ストアドプロシージャとして記述できれば理想的)
*
* ************** ***** *******************************************/
クラスツリーノード {
var $f_id = 'id';
var $f_pid = 'pid';
var $f_lft = 'lft';
var $f_rgt = 'rgt';
var $f_s = 'シーケンス';
var $f_level = 'lev';
var $f_child_num = 'child_num';
var $table;
var $db;
/**
*/
functiontreenode($table, $dbhandle) {
$this ->db = $dbhandle;
$this->table = $table;
//$this->db->debug = true;
}
/**
*/
関数 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;
}
/**
*/1 2 3 4