版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第PHP實(shí)現(xiàn)的無(wú)限分類(lèi)類(lèi)庫(kù)定義與用法示例$data[]=array('cat_id'=1,'pid'=0,'name'='中國(guó)');
$data[]=array('cat_id'=2,'pid'=0,'name'='美國(guó)');
$data[]=array('cat_id'=3,'pid'=0,'name'='韓國(guó)');
$data[]=array('cat_id'=4,'pid'=1,'name'='北京');
$data[]=array('cat_id'=5,'pid'=1,'name'='上海');
$data[]=array('cat_id'=6,'pid'=1,'name'='廣西');
$data[]=array('cat_id'=7,'pid'=6,'name'='桂林');
$data[]=array('cat_id'=8,'pid'=6,'name'='南寧');
$data[]=array('cat_id'=9,'pid'=6,'name'='柳州');
$data[]=array('cat_id'=10,'pid'=2,'name'='紐約');
$data[]=array('cat_id'=11,'pid'=2,'name'='華盛頓');
$data[]=array('cat_id'=12,'pid'=3,'name'='首爾');
$cat=newCategory('',array('cat_id','pid','name','cname'));
$s=$cat-getTree($data);//獲取分類(lèi)數(shù)據(jù)樹(shù)結(jié)構(gòu)
//$s=$cat-getTree($data,1);獲取pid=1所有子類(lèi)數(shù)據(jù)樹(shù)結(jié)構(gòu)
foreach($sas$vo)
echo$vo['cname'].'br
第二種用法,采用數(shù)據(jù)庫(kù),基于TP,例子如下
數(shù)據(jù)表,前綴_articlec_cat,包含cat_id,pid,title三個(gè)字段
require('Category.class.php');//導(dǎo)入Category.class.php類(lèi)
$cat=newCategory('ArticleCat',array('cat_id','pid','title','fulltitle'));
$s=$cat-getList();//獲取分類(lèi)結(jié)構(gòu)
$s=$cat-getList('',1);//獲取pid=1的子分類(lèi)結(jié)構(gòu)
$s=$cat-getList($condition,1);//$condition為查詢條件,獲取pid=1的子分類(lèi)結(jié)構(gòu)
$s=$cat-getPath(3);//獲取分類(lèi)id=3的路徑
$s=$cat-add($data);//添加分類(lèi),$data需要包含上級(jí)分類(lèi)pid
$s=$cat-edit($data);//修改分類(lèi),$data需要包含分類(lèi)ID
$s=$cat-del(10);//刪除分類(lèi)id=10的分類(lèi)
詳細(xì)用法:參考代碼說(shuō)明
+------------------------------------------------------------------------------
*分類(lèi)管理
+------------------------------------------------------------------------------
classCategory
//分類(lèi)的數(shù)據(jù)表模型
private$model;
//原始的分類(lèi)數(shù)據(jù)
private$rawList=array();
//格式化后的分類(lèi)
private$formatList=array();
//錯(cuò)誤信息
private$error="";
//格式化的字符
private$icon=array('│','├','└');
//字段映射,分類(lèi)id,上級(jí)分類(lèi)pid,分類(lèi)名稱(chēng)title,格式化后分類(lèi)名稱(chēng)fulltitle
private$field=array();
功能:構(gòu)造函數(shù),對(duì)象初始化;
屬性:public;
參數(shù):$model,數(shù)組或?qū)ο螅赥P2.0的數(shù)據(jù)表模型名稱(chēng),若不采用TP2.0,可傳遞空值。
$field,字段映射,分類(lèi)id,上級(jí)分類(lèi)pid,分類(lèi)名稱(chēng)title,格式化后分類(lèi)名稱(chēng)fulltitle
依次傳遞,例如在分類(lèi)數(shù)據(jù)表中,分類(lèi)id,字段名為CatID,上級(jí)分類(lèi)pid,字段名稱(chēng)name,希望格式化分類(lèi)后輸出cname,
則,傳遞參數(shù)為,$field('CatID','pid','name','cname');若為空,則采用默認(rèn)值。
返回:無(wú)
備注:用到了TP的D函數(shù)
publicfunction__construct($model='',$field=array())
//判斷參數(shù)類(lèi)型
if(is_string($model)(!empty($model))){
if(!$this-model=D($model))//注意這里的D函數(shù)需要TP支持
$this-error=$model."模型不存在!";
if(is_object($model)){
$this-model=$model;
$this-field['id']=$field['0']$field['0']:'id';
$this-field['pid']=$field['1']$field['1']:'pid';
$this-field['title']=$field['2']$field['2']:'title';
$this-field['fulltitle']=$field['3']$field['3']:'fulltitle';
功能:獲取分類(lèi)信息數(shù)據(jù);
屬性:private;
參數(shù):查詢條件$condition;
返回:無(wú);
備注:需要TP支持
privatefunction_findAllCat($condition,$orderby=NULL)
if(empty($orderby)){
$this-rawList=$this-model-where($condition)-findAll();
}else{
$this-rawList=$this-model-where($condition)-order($orderby)-findAll();
功能:返回給定上級(jí)分類(lèi)$pid的所有同一級(jí)子分類(lèi);
屬性:public;
參數(shù):上級(jí)分類(lèi)$pid;
返回:子分類(lèi),二維數(shù)組;
publicfunctiongetChild($pid)
$childs=array();
foreach($this-rawListas$Category){
if($Category[$this-field['pid']]==$pid)
$childs[]=$Category;
return$childs;
功能:無(wú)限分類(lèi)核心部分,遞歸格式化分類(lèi)前的字符;
屬性:private;
參數(shù):分類(lèi)id,前導(dǎo)空格;
返回:無(wú);
privatefunction_searchList($CatID=0,$space="")
//下級(jí)分類(lèi)的數(shù)組
$childs=$this-getChild($CatID);
//如果沒(méi)下級(jí)分類(lèi),結(jié)束遞歸
if(!($n=count($childs)))
return;
$cnt=1;
//循環(huán)所有的下級(jí)分類(lèi)
for($i=0;$i$i++){
$pre="";
$pad="";
if($n==$cnt){
$pre=$this-icon[2];
}else{
$pre=$this-icon[1];
$pad=$space$this-icon[0]:"";
$childs[$i][$this-field['fulltitle']]=($space$space.$pre:"").$childs[$i][$this-field['title']];
$this-formatList[]=$childs[$i];
//遞歸下一級(jí)分類(lèi)
$this-_searchList($childs[$i][$this-field['id']],$space.$pad."");
$cnt++;
功能:不采用數(shù)據(jù)模型時(shí),可以從外部傳遞數(shù)據(jù),得到遞歸格式化分類(lèi);
屬性:public;
參數(shù):$condition,數(shù)字或字符串,需要符合TP查詢條件規(guī)則,起始分類(lèi)id,$CatID=0;
$orderby排序參數(shù)
返回:遞歸格式化分類(lèi)數(shù)組;
備注:需要TP支持
publicfunctiongetList($condition=NULL,$CatID=0,$orderby=NULL)
unset($this-rawList);
unset($this-formatList);
$this-_findAllCat($condition,$orderby,$orderby);
$this-_searchList($CatID);
return$this-formatList;
功能:不采用數(shù)據(jù)模型時(shí),可以從外部傳遞數(shù)據(jù),得到遞歸格式化分類(lèi);
屬性:public;
參數(shù):$data,二維數(shù)組,起始分類(lèi)id,默認(rèn)$CatID=0;
返回:遞歸格式化分類(lèi)數(shù)組;
publicfunctiongetTree($data,$CatID=0)
unset($this-rawList);
unset($this-formatList);
$this-rawList=$data;
$this-_searchList($CatID);
return$this-formatList;
功能:獲取錯(cuò)誤信息;
屬性:public;
參數(shù):無(wú);
返回:錯(cuò)誤信息字符串;
publicfunctiongetError()
return$this-error;
功能:檢查分類(lèi)參數(shù)$CatID,是否為空;
屬性:private;
參數(shù):分類(lèi)參數(shù)$CatID,整型。
返回:正確,返回true,錯(cuò)誤,返回false;
privatefunction_checkCatID($CatID)
if(intval($CatID)){
returntrue;
}else{
$this-error="參數(shù)分類(lèi)ID為空或者無(wú)效!";
returnfalse;
功能:查詢路徑;
屬性:private;
參數(shù):分類(lèi)參數(shù)$CatID,整型。
返回:出錯(cuò)返回false;
備注:需要TP支持
privatefunction_searchPath($CatID)
//檢查參數(shù)
if(!$this-_checkCatID($CatID))
returnfalse;
//初始化對(duì)象,查找上級(jí)Id;
$rs=$this-model-find($CatID);
//保存結(jié)果
$this-formatList[]=$rs;
$this-_searchPath($rs[$this-field['pid']]);
功能:查詢給定分類(lèi)id的路徑;
屬性:public;
參數(shù):分類(lèi)參數(shù)$CatID,整型。
返回:數(shù)組;
備注:需要TP支持
publicfunctiongetPath($CatID)
unset($this-rawList);
unset($this-formatList);
//查詢分類(lèi)路徑
$this-_searchPath($CatID);
returnarray_reverse($this-formatList);
/****************************************以下為分類(lèi)添加、修改、刪除****************************************************/
功能:添加分類(lèi);
屬性:public;
參數(shù):$data,一維數(shù)組,要添加的數(shù)據(jù),$data需要包含上級(jí)分類(lèi)ID。
返回:添加成功,返回相應(yīng)的分類(lèi)ID,添加失敗,返回FALSE;
備注:需要TP支持
publicfunctionadd($data)
if(empty($data))
returnfalse;
return$this-model-data($data)-add();
功能:修改分類(lèi);
屬性:public;
參數(shù):$dat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來(lái)五年楓樹(shù)類(lèi)樹(shù)苗企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略分析研究報(bào)告
- 2026年玉溪市紅塔區(qū)教體系統(tǒng)公開(kāi)招聘畢業(yè)生備考題庫(kù)(30人)有答案詳解
- 2025福建福州濱海實(shí)驗(yàn)學(xué)校臨聘教師招聘2人備考題庫(kù)及答案詳解(考點(diǎn)梳理)
- 未來(lái)五年車(chē)載音頻企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略分析研究報(bào)告
- 未來(lái)五年散尾葵企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略分析研究報(bào)告
- 2026云南臨滄市住房和城鄉(xiāng)建設(shè)局招聘公益性崗位人員4人備考題庫(kù)及一套答案詳解
- 2025安徽蚌埠市懷遠(yuǎn)縣衛(wèi)生健康系統(tǒng)引進(jìn)高層次人才和急需緊缺專(zhuān)業(yè)人才30人備考題庫(kù)及1套參考答案詳解
- 2026江蘇南京大學(xué)SZYJ20260007智能科學(xué)與技術(shù)學(xué)院特任副研究員招聘1人備考題庫(kù)(含答案詳解)
- 2006云南昆明晉寧產(chǎn)業(yè)園區(qū)管理委員會(huì)招聘編外人員3人備考題庫(kù)帶答案詳解
- 2026四川宜賓銘星中醫(yī)醫(yī)院人才招募中醫(yī)醫(yī)生、外科醫(yī)生、編碼員備考題庫(kù)參考答案詳解
- 急診預(yù)檢分診課件教學(xué)
- 2025年高二數(shù)學(xué)建模試題及答案
- 2026屆浙江省杭州城區(qū)6學(xué)校數(shù)學(xué)七年級(jí)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 儲(chǔ)能集裝箱知識(shí)培訓(xùn)總結(jié)課件
- 幼兒園中班語(yǔ)言《雪房子》課件
- 房地產(chǎn)項(xiàng)目開(kāi)發(fā)管理方案
- 堆垛車(chē)安全培訓(xùn)課件
- 貝林妥單抗護(hù)理要點(diǎn)
- 衛(wèi)生院關(guān)于成立消除艾滋病、梅毒、乙肝母嬰傳播領(lǐng)導(dǎo)小組及職責(zé)分工的通知
- 廣東省執(zhí)信中學(xué)、廣州二中、廣州六中、廣雅中學(xué)四校2025年高三物理第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題
- 小學(xué)語(yǔ)文教學(xué)能力提升策略
評(píng)論
0/150
提交評(píng)論