RUIBlog開發手記之無限分類

2021-10-10 21:09:10 字數 2246 閱讀 7904

關於「無限分類」實現的方法其實蠻多的,我的理解無非是三種:遞迴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...