其他常見的無限分類方法:
1,簡單的通過遞迴查詢加目錄path欄位的無限分類
缺點:查詢資料庫次數太多,不方便其他操作,比如刪除節點。新增節點,移動節點
2,左右值無限分類,預排序二叉樹
缺點:操作繁瑣,資料庫冗餘,且新增刪除修改都要進行左右值更新
本分類方法的優勢:
1,資料庫結構簡單,只有 cid parentid name 三個字段,無任何冗餘字段
2,不使用遞迴查詢,所有操作只需一條sql語句
3,所有資料在讀取一次資料庫後,在陣列內進行分析處理,節省資料庫伺服器資源
建立資料庫以及表:
create database `sortclass`default charset utf8;
create table if not exists `class` (
`cid` mediumint(8) unsigned not null auto_increment,
`pid` mediumint(8) unsigned not null,
`cname` varchar(50) not null,
primary key (`cid`),
key `pid` (`pid`)
) engine=myisam default charset=utf8;
處理檔案示例:
<?php
header("content-type: text/html; charset=utf-8");
//連線資料庫
$link = mysql_connect('localhost','root','eric') or die(mysql_error());
mysql_select_db('sortclass',$link);
//無限分類類庫
class sortclass
}function setnode ($id, $parent, $value)
function getlist (&$tree, $root= 0)
}function getvalue ($id)
function getlayer ($id, $space = false)
function getparent ($id)
function getparents ($id)
ksort($parent);
reset($parent);
return $parent;
}function getchild ($id)
function getchilds ($id = 0)
function addnode($name,$pid)
function modnode($cid, $newname)
function delnode($cid)else
mysql_query($sql,$this->link);
}function movenode($cid, $topid)
}//函式
function back()
//聲成select
function makeselect($array,$formname)
return $select.'';
}$tree = new sortclass($link,'`class`');
$op = !empty($_post['op']) ? $_post['op'] : $_get['op'];
if(!empty($op))
if($op=='mod')
if($op=='del')
if($op=='move')
}$category = $tree->getchilds();
?>
ASP無限分類資料庫版
asp無限分類資料庫版 const issql 0 定義資料庫型別,1為sql server,0為access function openconn conn 開啟資料庫連線 dim connstr if issql 1 then 如果是sql server資料庫 sql server資料庫連線引數 ...
PHP單次資料庫查詢實現無限級分類
這裡使用一張簡單的地區表舉例,表字段如下 使用sql select id,parentid,name from area 查詢得出的資料形如 array 3362 1 array 3 2 array 3 3 array 3 4 array 3 使用函式xmsb getdatatree desc xm...
資料庫無限分級(分類表)
在資料庫中我們經常會做這樣一件事 建立了乙個分類表,再建立乙個子分類,有多少級我們就習慣建立多少張表。這樣不僅耗費大量時間而且還會在操作表的時候陷入混亂,這裡我介紹一種辦法 無限分級。通過這種方式,我們僅需要建立一張表就能將不管多少級分類全部放入。首先我們理清一下思想,在這張表中我們要有個編號 id...