>  기사  >  백엔드 개발  >  PHP mysql Database_php 기술에서 무제한 분류를 달성하는 방법

PHP mysql Database_php 기술에서 무제한 분류를 달성하는 방법

WBOY
WBOY원래의
2016-05-16 20:28:32995검색

이 글의 예시에서는 php mysql 데이터베이스에서 무제한 분류를 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

이 PHP 무제한 분류 코드는 데이터베이스가 추가, 삭제, 편집, 이동 기능을 갖춘 MySQL이라는 점을 포함하여 비교적 완전하며 데이터베이스 SQL 테이블 구조도 제공합니다.

코드 복사 코드는 다음과 같습니다.
//데이터베이스에 연결
$link = mysql_connect('localhost','root','') 또는 die(mysql_error())
mysql_select_db('class',$link)또는 die(mysql_error())
mysql_query("gbk 이름 설정"); //무제한 분류 라이브러리
클래스 sortclass{
var $data = 배열()
var $child = array(-1=>array())
var $layer = array(-1=>-1)
var $부모 = 배열()
var $링크
var $테이블
함수 sortclass($link, $table){
$this->setnode(0, -1, '최상위 노드')
$this->link = $link
$this->테이블 = $테이블
$노드 = 배열()
$results = mysql_query("$this->table에서 * 선택",$this->link); while($node = mysql_fetch_array($results)){
$this->setnode($node['id'],$node['f_id'],$node['name'])
}
}
함수 setnode($id, $parent, $value){
$부모 = $부모?$부모:0; $this->data[$id] = $값
$this->child[$id] = 배열()
$this->child[$parent][] = $id
$this->parent[$id] = $부모
$this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent]
}
함수 getlist(&$tree, $root= 0){
foreach($this->child[$root] as $key=>$id){
$tree[] = $id
if ($this->child[$id]) $this->getlist($tree, $id)
}
}
함수 getvalue($id){return $this->data[$id];}
함수 getlayer($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id]
}
함수 getparent($id){return $this->parent[$id];}
함수 getparents($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id]
}
ksort($부모)
재설정($부모)
$부모 반환
}
함수 getchild($id){return $this->child[$id];}
함수 getchilds ($id = 0){
$child = 배열($id)
$this->getlist($child, $id)
$child 반환
}
함수 addnode($name,$pid){
//echo "$this->테이블(`f_id`,`name`) 값에 삽입 ​​('$pid','$name')";exit; mysql_query("$this->테이블(`f_id`,`name`) 값에 삽입 ​​('$pid','$name')",$this->link
}
함수 modnode($cid, $newname){
mysql_query("update $this->table set `name`='$newname' 여기서 `id` = $cid",$this->link); }
함수 delnode($cid){
$allchilds = $this->getchilds($cid)
$sql =''; if(emptyempty($allchilds)){
$sql = "`id` = $cid인 $this->테이블에서 삭제"; }그밖에{
$sql = '('.implode(',',$allchilds).','.$cid.')의 `id`에서 '.$this->테이블을 삭제합니다.'; }
mysql_query($sql,$this->link)
}
함수 movenode($cid, $topid){
mysql_query("update $this->table set `f_id`=$topid where `id` = $cid", $this->link
}
}
//함수
함수 뒤로(){
echo ''; 종료
}
//선택 생성
함수 makeselect($array,$formname){
글로벌 $트리
$select = ''; }
$tree = new sortclass($link,''p_newsclass`')
$op = !emptyempty($_post['op']) ? $_post['op'] : $_get['op']
if(!emptyempty($op)){
if($op=='추가'){
$tree->addnode($_post['cname'],$_post['pid'])
뒤로(); }
if($op=='mod'){
$tree->modnode($_post['cid'],$_post['cname'])
뒤로(); }
if($op=='del'){
$tree->delnode($_get['cid'])
뒤로(); }
if($op=='이동'){
$tree->movenode($_post['who'],$_post['to'])
뒤로();
}
}
$category = $tree->getchilds()
?>

前台调用实例代码如下:
复代码 代码如下: