国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP實現(xiàn)無限分類的實現(xiàn)方法

2024-05-04 23:52:16
字體:
供稿:網(wǎng)友

無限級分類是一種設計技巧,在開發(fā)中經(jīng)常使用,例如:網(wǎng)站目錄、部門結構、文章分類。筆者覺得它在對于設計表的層級結構上面發(fā)揮很大的作用,比如大家在一些平臺上面,

填寫邀請人,它就是一種上下級的關系,上級會有多個下級,下級又會有自己的分支,大多數(shù)都是利用遞歸的思想去實現(xiàn)。話不多說,首先來溫故一下遞歸的實現(xiàn)

遞歸(程序調(diào)用自身的編程技巧):

1、$_GLOBALS[result]

2、static $result

3、參數(shù)引用&

舉例:遍歷1-10

```$i=0;function deeploop( $i ){  global $i;  $i++;  echo $i;  if( $i<10 ){    deeploop($i);  }}function deeploop( ){  static $i=0;  $i++;  echo $i;  if( $i<10 ){    deeploop($i);  }}function deeploop( &$i=0 ){  $i++;  echo $i;  if( $i<10 ){    deeploop($i);  }}```

一、無限分類實現(xiàn):

1、表設計設置父id 頂級父id設為0   建立族譜樹;每一個分類都需記錄它的父級id。( pid=0 代表頂級 )   

id pid catename cateorder createtime  ( 主鍵id,父id,分類name,分類排序,創(chuàng)建時間)

舉例:網(wǎng)站的分類目錄結構;餐飲的分類結構;評論的結構

 2、全路徑無限分類(以一個字段將所有父級id按順序記錄下來)

 id path catename cateorder createtime  ( 主鍵id,逗號分隔的順序排列父id,分類name,分類排序,創(chuàng)建時間)

優(yōu)缺點:

全路徑查詢方便;增加,移動分類時數(shù)據(jù)維護稍顯復雜;

二、舉例實現(xiàn)(網(wǎng)站目錄):

分類表:

  ```    #父級Id遞歸法    CREATE TABLE `deepcate`(      `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,      `pid` int(11) NOT NULL DEFAULT 0,      `catename` char(25) NOT NULL,      `cateorder` int(6) ,      `createtime` date    )ENGINE=INNODB default CHARSET=utf8;            //數(shù)據(jù)    INSERT INTO `deepcate` VALUES(1,0,'圖片',null,'2016-11-01'),                  ( 2,1,'美女',null,'2016-11-01'),                  ( 3,1,'新聞',null,'2016-11-01'),                  ( 4,2,'足球?qū)氊?#39;,null,'2016-11-01'),                  ( 5,2,'日韓明星',null,'2016-11-01'),                  ( 6,5,'美女寫真',null,'2016-11-01');                      #全路徑    CREATE TABLE `qljcate` (      `id` int(11) NOT NULL,      `path` char(255) ,      `catename` char(25) NOT NULL,      `cateorder` int(6),      `createtime` date    )ENGINE=INNODB default CHARSET=utf8;        INSERT INTO `qljcate` VALUES( 1,null,'圖片',null,'2016-11-01'),                  ( 2,1,'美女圖片',null,'2016-11-01'),              ( 3,1,2,'足球?qū)氊?#39;,null,'2016-11-01'),                  ( 4,1,2,'日韓明星',null,'2016-11-01'),                  ( 5,1,2,4,'美女寫真',null,'2016-11-01');  ```

    獲取圖片所在的目錄路徑:
  

  ```    #父級Id遞歸法    CREATE TABLE `deepcate`(      `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,      `pid` int(11) NOT NULL DEFAULT 0,      `catename` char(25) NOT NULL,      `cateorder` int(6) ,      `createtime` date    )ENGINE=INNODB default CHARSET=utf8;            //數(shù)據(jù)    INSERT INTO `deepcate` VALUES(1,0,'圖片',null,'2016-11-01'),                  ( 2,1,'美女',null,'2016-11-01'),                  ( 3,1,'新聞',null,'2016-11-01'),                  ( 4,2,'足球?qū)氊?#39;,null,'2016-11-01'),                  ( 5,2,'日韓明星',null,'2016-11-01'),                  ( 6,5,'美女寫真',null,'2016-11-01');                      #全路徑    CREATE TABLE `qljcate` (      `id` int(11) NOT NULL,      `path` char(255) ,      `catename` char(25) NOT NULL,      `cateorder` int(6),      `createtime` date    )ENGINE=INNODB default CHARSET=utf8;        INSERT INTO `qljcate` VALUES( 1,null,'圖片',null,'2016-11-01'),                  ( 2,1,'美女圖片',null,'2016-11-01'),              ( 3,1,2,'足球?qū)氊?#39;,null,'2016-11-01'),                  ( 4,1,2,'日韓明星',null,'2016-11-01'),                  ( 5,1,2,4,'美女寫真',null,'2016-11-01');  ```

*注意點:

移動分類不能移到自己及其子類下面;刪除分類 (只能刪除最底層的分類,及不含子類的分類;換言之,只能從最底層刪起).

   思考圖片類型下所有的圖片分類? 

```  #pid 父級id實現(xiàn)法  function GetAllcate( $id,&$result=array() ){    $sql = "SELECT * FROM deepcate WHERE pid in ({$id})";    $query = mysql_query( $sql );    $row = mysql_fetch_assoc( $query );    if( mysql_num_rows($row)>0 )    {      $idlist = array();      while( $row ){        $result[] = $row;        $idlist[] = $row['id'];       }      $id = implode(',',$idlist);      GetAllcate( $id,$result );        }        $result = array_unique( $result );    return $result;  }  ```

此類方法比較適用于查詢所在父分類下所有的書籍、文章。。。當然,全路徑可以直接獲取,就不再此提出了。

實際操作中,我們可以根據(jù)實際情況設計合理的表結構。

舉個實例,連鎖門店實現(xiàn)商品的管理,門店的賬戶設置就會存在上下級關系,根據(jù)代理點的分區(qū)可能存在這種下級擁有自己下級,那么采用這種無限分類的方法就比較靈活面對這種關系體系,只需設定每個賬戶等級,就能對不同的門店設定權限分配。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 乐至县| 赞皇县| 富平县| 南安市| 鹤岗市| 青铜峡市| 阳山县| 聂荣县| 宁夏| 南丹县| 平谷区| 江油市| 鄂伦春自治旗| 葵青区| 棋牌| 岳普湖县| 天门市| 连山| 怀来县| 新邵县| 南宫市| 潼南县| 阳曲县| 当涂县| 昭觉县| 蕉岭县| 洱源县| 扎兰屯市| 昭平县| 康马县| 岫岩| 巴东县| 锦屏县| 永清县| 遵化市| 宁河县| 肥城市| 鹿邑县| 绍兴县| 建宁县| 临澧县|