最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于php無限分類的深入理解

 更新時間:2013年06月02日 15:38:59   作者:  
本篇文章是對php無限分類就行了詳細的分析介紹,需要的朋友參考下
無限分類是實際開發(fā)中經(jīng)常用到的一種數(shù)據(jù)結(jié)構(gòu),一般我們稱之為樹形結(jié)構(gòu)。
題設(shè):類似淘寶的商品分類,可以在任意分類設(shè)置其子類。
 
一、創(chuàng)建`type`數(shù)據(jù)表
`id` 自增長
`fid` int(11) 默認(0) ,父節(jié)點id
`name` varchar(50),分類名稱
復(fù)制代碼 代碼如下:

CREATE TABLE `type` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fid` int(11) NOT NULL DEFAULT '0',
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
)

二、添加
我們先添加幾個頂級分類
復(fù)制代碼 代碼如下:

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '手機');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '電腦');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '鞋子');
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '衣服');

這里fid=0是代表頂級分類

接著我們?yōu)閧電腦}添加幾個個子分類
復(fù)制代碼 代碼如下:

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '臺式'), (NULL, '2', '筆記本');

這里fid=2,2這個id是分類{電腦}的id,如果是添加{鞋子}的子分類則fid=3
同理我們?yōu)閧筆記本}添加子分類則fid=6
復(fù)制代碼 代碼如下:

INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');

三、刪除
如果我們想刪除{筆記本}這個分類,很簡單
復(fù)制代碼 代碼如下:

DELETE FROM `type` WHERE `id`=6

{筆記本}的子分類我們也要記得做相應(yīng)的處理
復(fù)制代碼 代碼如下:

function del($fid) {
    $sql="SELECT * FROM `type` WHERE `fid`=$fid";
    $rs=mysql_query($sql);

    for ($i = 0; $i < count($rs); $i++) {
        $sql="DELETE FROM `type` WHERE `id`={$rs[$i]['id']}";
        mysql_query($sql);

        del($rs['id']);//遞歸
    }
}
del(6);//執(zhí)行操作

這里你也許你會疑惑為什么那么麻煩用遞歸,而不是直接這樣刪除
復(fù)制代碼 代碼如下:

DELETE FROM `type` WHERE `fid`=6

這樣我們不就可以直接刪除{ausu}、{hp}?但是假設(shè){ausu}有一個子分類{a1},{a1}也有一個子分類{a2},如果不用遞歸我們就無法徹底刪除數(shù)據(jù)。

三、查找
1.查找{電腦}的子分類
復(fù)制代碼 代碼如下:

SELECT * FROM `type` WHERE `fid`=2

2.查找{電腦}的所有子分類
復(fù)制代碼 代碼如下:

function sel($fid) {
    $sql="SELECT * FROM `type` WHERE `fid`=$fid";
    $rs=mysql_query($sql);

    for ($i = 0; $i < count($rs); $i++) {
        echo $rs[$i]['name'];

        sel($rs[$i]['id']);//遞歸
    }
}
sel(2);

四、實際數(shù)據(jù)應(yīng)用
在數(shù)據(jù)表添加一個字段`tid`,字段值為記錄所屬分類`type`表的id。必須是id不能是name,因為name的值可能會改變。
例如查詢屬于{電腦}分類的商品
復(fù)制代碼 代碼如下:

SELECT * FROM `goods` WHERE `tid`=2

注:代碼沒有運行過可能會有錯誤,但是思路是正確的,主要的是理解樹形結(jié)構(gòu),而不是記住代碼。

相關(guān)文章

最新評論

南漳县| 莲花县| 屏东县| 阿拉善盟| 无棣县| 海城市| 措美县| 绥阳县| 牙克石市| 陆丰市| 东辽县| 宜阳县| 板桥市| 方城县| 旬阳县| 保定市| 珠海市| 阳朔县| 漾濞| 江阴市| 牡丹江市| 荔浦县| 铜陵市| 将乐县| 广汉市| 三台县| 兴宁市| 江口县| 广州市| 塘沽区| 堆龙德庆县| 铁力市| 东乡族自治县| 贵德县| 运城市| 三都| 黔西| 饶河县| 南宁市| 德昌县| 尉犁县|