前一周寫的吧,使用中效果還不錯。
主要思想來自:http://www.phpobject.net/b...[url=http://www.phpobject.net/blog/read.php?49][/url]
這裡就不多解釋原理了,直接發程式碼。
PS:這裡程式碼是不能直接使用的,必須結合我的一些其他函式庫類別。應該說思想才是最重要的,這裡主要提供一個分類的想法。
複製程式碼 程式碼如下:
/**
--
-- 表的結構 `daxue8_category`
--
CREATE TABLE `daxue8_category` (p生活 - 🎜> `pid` Smallint(6) NOT NULL 預設 '0',
`level` Smallint(6) NOT NULL 預設 '0',
`cname` char(64)0',
`cname` char(64) Smallint(6) NOT NULL 預設值'0',
`rgt` smallint(6) NOT NULL 預設 '0',
`uid`mediumint(8)(8) `ctime` int(10) NOT NULL 預設 '0',
`cstate` tin gnum ` mediumint(8) NOT NULL 預設 '0',
`orderstyle` smallint(3) NOT NULL 預設 '0', --
--匯出表中的資料 `daxue8_category`
--
INSERT INTO `daxue8_category` '管理員', 1163608814, 1, 0, 0);
*/
class category
{
var egory()
{
$this->tbname=TB_PREX.'_category';
🎜> /**
* 增加子節點
* @param array $node 待增加子節點的屬性* */
function add($node,$pid){
//檢查上該節點 pid.' and cname=''.$node['cname'].''')){
//$this->error(__FUNCTION__.'():該節點 '.$node[cname' ].'已經存在! }
//取得父節點資訊
$pnode =$this-> 說明where lft>'.$pnode['rgt']);
$this->module->query('update `'.$this->tbname.'` set .$pnode['rgt']);
//插入新節點
$node['pid']=$pid;
$node['lft']=$pnode['rgt'] ;
$node['rgt']=$pnode['rgt']+1;
$node['level']=$pnode['level. > return $this->module->add($node);
}
/** $cid 待刪除的節點的ID
* @ param $delete_childern 如果該節點存在子節點,是否強制刪除。設定未true,則當存在子節點的時候,刪除失敗,回傳false
*
*/
//取得節點資訊
$node=$this->get_by_cid($cid);
if(($this->child_num($node)>0)($node)>0)&ete($)$4]]($node)>0)($node)>0]]($node)_$one]($node)>0)($node)&fete($)($D)$($node)>0)($node)>0)($node)_$one]]($node)>0)($node)>0)($node)&fete($node)>($connode)>0)($node)>0)&ete($)$D]]($node)>0)($node)>0)&ete($del__F]; .'():該節點存在子節點!');
//刪除該節點及其所有子節點
bet $this->module->delete('where lft between $this->module->delete('where lft noween '.$node '$.de)[]]]$.nodeween ' rgt']);
//修改對應的左右鍵值
$plus=$node['r query('update `'.$this->tbname.'` set lft=lft-'.$plus.' where lft>'.$node['rgt']);
query('update `'.$this->tbname.'` set rgt=rgt-'.$plus.' where rgt>'.$node['rgt']);
/**
* 更新一個節點
* @param array $set更新集
*/
function update($set,$cid){
}
/**
* 選取節點及其子節點
* @param int $cid節點的主鍵ID */
function select($cid,$deep 🎜> $node=$this- >get_by_cid($cid);
$where='where lft between '.$node['lft'].' and '.$node['rft); )$where.=' and level if($deep==1){ }else{
$where.=' order by lft }
return $this->module->select($where);
}
🎝>*/
function get_parent($cid)
{
return $this->module->select('where lft='.$node['rgt'].' order by lft asc');
}
/**
* 選取子節點
* @param int $cid節點的主鍵ID function get_children($pid,$deep=0){
by_cid($pid) ;
$where='where lft>'.$pnode['lft'].' 和 rgt if(!empty($deep))$where.=' 且 level if($deep==1){
$where.=' order by orderstyle desc';
}else{
$where.=' order by l闠asc';
}
return $this->module->select($where);
}
/**
* 取得第deep層子節點
* @param int $cid節點的主鍵ID */
function get_level_children($p $pnode=$this->get_by_cid($process號);
$where='where lft>'.$pnode['lft'].' 與rgt ($pnode['level']+$deep);
$where.='依orderstyle desc 排序';
🎜 > /**
* 取得節點資訊
* @param $cid 節點主鍵ID */
函數get_by_cid($cid){
$node=$this->$nodetail()0.e if(! $node)$this->error(__FUNCTION__.'():取得節點'.$cid.'失敗!');
return $node;
}
/** }
/**
* 取得子節點的數目
* @param array $node 節點資訊與 */
function display($cid) $nodes=$this->select ($cid);
foreach($nodes as $node){
}
}
/*-------private------------------------------ -----*/
function error($msg){
die('ERROR : file ). 🎜>? >
以上就介紹了分類推進事業單位改革的意見 自己前幾天寫的無限分類類,包括了分類推進事業單位改革的意見方面的內容,希望對PHP教程有興趣的朋友有所幫助。