關於「無限分類」實現的方法其實蠻多的,我的理解無非是三種:遞迴,ajax,親緣關係。從效率上講,後兩種交第一種好些;從實現難度上講,最後一種交優。
ruiblog的分類使用的就是遞迴的思想來實現的。這個分類實際上就是對**欄目的乙個管理,只不過你可以在欄目下面無限新增子欄目罷了。ps:誰會沒事兒給**弄那麼多欄目呢,我覺得只是叫法上好聽罷了,顯得高階。
我先把原始碼貼出來,然後講解下是實現的原理。
<?php
public function getlist()
$rlist .= " / 文件:".d('article')->getarcnumbycolid($val['colid']);
if(d('article')->getarcnumbycolid($val['colid']) != 0)
$rlist .= " / 模型:".d('model')->getmname($val['mid'])."】";
if($val['isshow'] == 0)
$rlist .= '';
$rlist .= "編輯|新增子分類";
//if($this->sunnum($val['colid']) == 0)
$rlist .= " ";
$rlist .= "";
$rlist .= "
"; $rlist .= "";
$rlist .= "";
$rlist .= $this->getsunlist($val['colid']," ");
$rlist .= "";
$rlist .= "
"; }
return $rlist;
} //獲得分類管理子列表
private function getsunlist($colid,$step)
$sunlist .= " / 文件:".d('article')->getarcnumbycolid($val['colid']);
if(d('article')->getarcnumbycolid($val['colid']) != 0)
$sunlist .= " / 模型:".d('model')->getmname($val['mid'])."】";
if($val['isshow'] == 0)
$sunlist .= '';
$sunlist .= "編輯|新增子分類";
//if($this->sunnum($val['colid']) == 0 )
$sunlist .= " ";
$sunlist .= "";
$sunlist .= "
"; $sunlist .= "";
$sunlist .= "";
$sunlist .= $this->getsunlist($val['colid'],$step." ");
$sunlist .= "
"; }
return $sunlist;
} //子分類數量
public function sunnum($colid)
?>
**貼的挺多,千萬不要被這麼多的**給虎了,我在顯示分類的時候用php拼接生成了前台所需的html,我覺得用php來控制前台需要展現什麼樣的html更為方便。在ruiblog中分類的表需要和其他的一些表進行關聯什麼的,在字段上多了一些,其用遞迴實現無限分類只用到三個欄位就可以了,如下:
id:主鍵 name:分類名稱 parent:上級分類id注意一下:頂級分類的parent一律為」0」。
第乙個方法,也就是getlist,它就是用來呼叫分類中的頂級分類的,條件一律都是parent=0;根據方法名,getsunlist方法是呼叫子分類的,其實使用遞迴的地方也在此方法中,這個方法有兩個引數$colid和$step,第乙個引數是用於條件查詢的,即parent=$colid的值,而$step則是下級分類往後空的空格,這樣在顯示時更為的直觀。
大致的實現原理如下:
根據條件呼叫出頂級分類,然後做迴圈,使用每個頂級分類的id去找子分類(即呼叫getsunlist方法),在getsunlist方法裡面使用迭代,這樣就可以很方便的找出每個子分類下面的子分類了。
Oracle開發手記
由於開發中經常遇到一些問題,想必大家也經常遇到,寫下來做乙個備忘錄.1.oracle問題,採用iis訪問oracle時,一定要注意客戶端的oracle資料夾的訪問許可權,這個是一定要注意設定的.2.oracle的字符集問題.由於很多情況下,需要不同的oracle資料庫資料交換,但是可能出現資料庫之間...
hnbk 開發手記
ajax 輸入驗證 表單資料的驗證可以分為客戶端驗證與伺服端驗證,為了安全起見,避免客戶端驗證被跳過,伺服端驗證往往是必須的。舉個例子來說,有個網頁必須輸入帳戶號碼與姓名,帳戶號碼是 x的格式,x為數字 當使用者在表單中輸入資料時,在過去往往只能靠使用者完成資料輸入,再按下 送出 按鈕,才可以進行伺...
開發手記9 10
http請求,訪問 使用get方式時候,一般用key value的形式,如 htpp 使用post的方式時,則會習慣使用 直接傳輸 json 字串的形式 如 htpp post的內容為 有沒有某個值,這種功能 一般都用 bit位來處理,節省空間。如 google protobuf uint32 ha...