>백엔드 개발 >PHP 튜토리얼 >제가 며칠전에 쓴 무한분류 카테고리에 대한 공공기관 개혁 추진에 대한 의견입니다.

제가 며칠전에 쓴 무한분류 카테고리에 대한 공공기관 개혁 추진에 대한 의견입니다.

WBOY
WBOY원래의
2016-07-29 08:36:17898검색

일주일 전에 이 글을 썼는데, 꽤 잘 사용하고 있습니다.
주요 아이디어 출처: http://www.phpobject.net/b...[url=http://www.phpobject.net/blog/read.php?49][/url]
여기서는 원리를 너무 길게 설명하지 않고 바로 코드를 보내드립니다.
추신: 이 코드는 직접 사용할 수 없으며 다른 라이브러리 클래스와 결합해야 합니다. 생각이 가장 중요하다고 말해야 합니다. 여기서는 주로 분류 아이디어를 제공합니다.

코드 복사 코드는 다음과 같습니다.


/** 
--  
-- 表적 유형 `daxue8_category` 
--  
CREATE TABLE `daxue8_category` ( 
  `cid` smallint(6) NULL 자동 증가가 아님,
  `pid` smallint(6) NOT NULL 기본값 '0', 
  `level` smallint(6) NOT NULL 기본값 '0', 
  `cname` char(64) NOT NULL 기본값 '', 
  `lft` smallint(6) NOT NULL 기본값 '0', 
  `rgt` smallint(6) NOT NULL 기본값 '0', 
  `uid` mediumint(8) NOT NULL 기본값 '0', 
  `사용자 이름 ` char(32) NOT NULL 기본값 '', 
  `ctime` int(10) NOT NULL 기본값 '0', 
  `cstate` tinyint(1) NOT NULL 기본값 '0', 
  `gnum ` mediumint(8) NOT NULL 기본값 '0', 
  `orderstyle` smallint(3) NOT NULL 기본값 '0', 
  PRIMARY KEY  (`cid`) 
) TYPE=MyISAM AUTO_INCREMENT=2 ; 
--  
-- 导take表中的数据 `daxue8_category` 
-- 
`daxue8_category` 값에 삽입(1, 0, 1, '루트', 1, 2, 0, ' 정리', 1163608814, 1, 0, 0); 
*/
클래스 카테고리
{
var $module
var $tbname;
                                                   *
* 하위 노드 추가
* @param array $node 추가할 하위 노드의 속성
* @param int $pid 상위 노드의 ID
*/
function add($node,$pid){
//노드가 이미 존재하는지 확인
if($node_exist=$this->mod ule-> 세부정보(' where pid='.$pid.' 및 cname=''.$node['cname'].''')){
                                                                                                           .$node['cname'].'이미 존재합니다!') ;
                //print_r($node_exist); $pnode=$this->get_by_cid($pid)
//다른 노드 업데이트
$this->module-> ;query('update `'.$this-> ;tbname.'' set lft=lft 2 where lft>'.$pnode['rgt'])
$this->module->query( 'update `'.$this->tbname.'`set rgt=rgt 2 where rgt>='.$pnode['rgt'])
//새 노드 삽입
$node[' pid']=$pid
$node[ 'lft']=$pnode['rgt']
$node['rgt']=$pnode['rgt']
$ node['level']=$pnode['level' ] 1;//레벨에 하나 추가
return $this->module->add($node)
}
/ **
* 노드 삭제
* @param $ cid 삭제할 노드의 ID
* @param $delete_childern 노드에 하위 노드가 있는 경우 강제 삭제 여부.설정이 true가 아닌 경우 자식 노드가 있는 경우 삭제에 실패하고 false를 반환합니다.
* *
*/
function delete($cid,$delete_childern=false)
{
//노드 정보 가져오기
$node=$this->get_by_cid($cid)
if(($this->child_num($node)>0)&&(!$delete_childern)) $this-> ;error(__FUNCTION__.'(): 이 노드에는 하위 노드가 있습니다!');
//노드와 모든 하위 노드 삭제
$this->module->delete('where lft between '.$node['lft'].' and '.$node ['rgt']);
//해당 왼쪽 및 오른쪽 키 값 수정 ​
$plus=$node['rgt']-$node['lft'] 1
$this; ->모듈 ->query('update `'.$this->tbname.'` set lft=lft-'.$plus.' where lft>'.$node['rgt'])
$this- >module->query('update `'.$this->tbname.'` set rgt=rgt-'.$plus.' where rgt>'.$node['rgt']) ;
true 반환
}
/**
* 노드 업데이트
* @param array $set update set
* @param int $cid 업데이트된 노드의 기본 키 ID
*/
function update($set,$cid){
return $this->module->update( $set,' where cid='.$cid);
}
/**
* 노드 및 하위 노드 선택
* @param int $cid 노드의 기본 키 ID
* @param int $deep 선택 깊이
*/
function select($cid,$deep=0)
{
/ /노드 정보 가져오기
$node=$this->get_by_cid($cid)
$where='where lft between '.$node['lft'].' ']
if(!empty($deep))$where.=' 및 level<'.$node['level'] $deep
if($deep==1){
$where.= ' 주문 스타일 설명으로 주문';
 { 
            $node=$this->get_by_cid($cid); this->module->select('where lft<='.$node['lft'].' and rgt> ='.$node['rgt'].' 왼쪽 asc'로 정렬

    /**
* 하위 노드 선택*/ 
    함수 get_children($pid,$deep=0){ 
        //获取节点信息 
       $pnode=$this->get_by_cid($pid) ; 
        $where='lft>'.$pnode['lft'].' 및 rgt<'.$pnode['rgt']; 
        if(!empty($deep))$where.=' 및 level<='.($pnode['level'] $deep); 
        if($deep==1){ 
           $where.=' 주문 스타일별로 주문'; 
        }else{ 
            $where.=' lft asc로 주문';             
        } 
        return $this->module->select($where); 
    } 
    /**
* 딥 레이어 하위 노드 가져오기
* @param int $cid 노드의 기본 키 ID
* @param int $deep 선택 깊이
*/ 
    함수 get_level_children($pid,$deep){ 
        //获取节点信息 
        $pnode=$this->get_by_ 시드($ PID); 
        $where='lft>'.$pnode['lft'].' 및 rgt<'.$pnode['rgt']; 
        $where.=' 및 level='.($pnode['level'] $deep); 
        $where.=' 주문 스타일 순서대로 주문'; 
        return $this->module->select($where); 
    } 
    /**
* 노드 정보 가져오기
* @param $cid 노드의 기본 키 ID
* @return array $node
*/ 
    함수 get_by_cid($cid){ 
        $node=$this->module->detail('where cid='.$cid ); 
        if(!$node)$this->error(__FUNCTION__.'():获取节点'.$cid.'失败!'); ['lft']-1)/2;
}
/**
* 하위 노드 수 가져오기
* @param array $node 노드 정보
* @return num
*/
함수 표시($cid)
{ select($cid); > foreach($nodes as $node){
echo str_repeat(' ',$node['level']-1).$node['cname']."n"
                                                                                                  ----- -*/
함수 오류($msg){
die('ERROR: file '.__FILE__.' function '.$msg)
}
}
?> >

위에는 공공기관의 분류 및 추진에 관한 의견을 소개한 것입니다. 제가 며칠 전에 쓴 무한분류 항목에는 공공기관의 분류 및 추진에 관한 의견이 포함되어 있어 관심 있는 친구들에게 도움이 되었으면 좋겠습니다. PHP 튜토리얼.


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.