溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于php無限分類的示例分析

發(fā)布時間:2021-10-13 11:19:13 來源:億速云 閱讀:124 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關基于php無限分類的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

無限分類是實際開發(fā)中經(jīng)常用到的一種數(shù)據(jù)結(jié)構,一般我們稱之為樹形結(jié)構。
題設:類似淘寶的商品分類,可以在任意分類設置其子類。
 
一、創(chuàng)建`type`數(shù)據(jù)表
`id` 自增長
`fid` int(11) 默認(0) ,父節(jié)點id
`name` varchar(50),分類名稱

復制代碼 代碼如下:


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`)
)


二、添加
我們先添加幾個頂級分類

復制代碼 代碼如下:


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)閧電腦}添加幾個個子分類

復制代碼 代碼如下:


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


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

復制代碼 代碼如下:


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


三、刪除
如果我們想刪除{筆記本}這個分類,很簡單

復制代碼 代碼如下:


DELETE FROM `type` WHERE `id`=6


{筆記本}的子分類我們也要記得做相應的處理

復制代碼 代碼如下:


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í)行操作


這里你也許你會疑惑為什么那么麻煩用遞歸,而不是直接這樣刪除

復制代碼 代碼如下:


DELETE FROM `type` WHERE `fid`=6


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

三、查找
1.查找{電腦}的子分類

復制代碼 代碼如下:


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


2.查找{電腦}的所有子分類

復制代碼 代碼如下:


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ù)應用
在數(shù)據(jù)表添加一個字段`tid`,字段值為記錄所屬分類`type`表的id。必須是id不能是name,因為name的值可能會改變。
例如查詢屬于{電腦}分類的商品

復制代碼 代碼如下:


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


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

感謝各位的閱讀!關于“基于php無限分類的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

php
AI