基于php無限分類的深入理解_PHP教程
推薦:PHP無限分類(樹形類)的深入分析本篇文章是對(duì)PHP無限分類(樹形類)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
無限分類是實(shí)際開發(fā)中經(jīng)常用到的一種數(shù)據(jù)結(jié)構(gòu),一般我們稱之為樹形結(jié)構(gòu)。題設(shè):類似淘寶的商品分類,可以在任意分類設(shè)置其子類。
一、創(chuàng)建`type`數(shù)據(jù)表
`id` 自增長(zhǎng)
`fid` int(11) 默認(rèn)(0) ,父節(jié)點(diǎn)id
`name` varchar(50),分類名稱
復(fù)制代碼 代碼如下:www.hl5o.cn
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`)
)
二、添加
我們先添加幾個(gè)頂級(jí)分類
復(fù)制代碼 代碼如下:www.hl5o.cn
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '0', '手機(jī)');
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是代表頂級(jí)分類
接著我們?yōu)閧電腦}添加幾個(gè)個(gè)子分類
復(fù)制代碼 代碼如下:www.hl5o.cn
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '臺(tái)式'), (NULL, '2', '筆記本');
這里fid=2,2這個(gè)id是分類{電腦}的id,如果是添加{鞋子}的子分類則fid=3
同理我們?yōu)閧筆記本}添加子分類則fid=6
復(fù)制代碼 代碼如下:www.hl5o.cn
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '6', 'ausu'), (NULL, '6', 'hp');
三、刪除
如果我們想刪除{筆記本}這個(gè)分類,很簡(jiǎn)單
復(fù)制代碼 代碼如下:www.hl5o.cn
DELETE FROM `type` WHERE `id`=6
{筆記本}的子分類我們也要記得做相應(yīng)的處理
復(fù)制代碼 代碼如下:www.hl5o.cn
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í)行操作
這里你也許你會(huì)疑惑為什么那么麻煩用遞歸,而不是直接這樣刪除
復(fù)制代碼 代碼如下:www.hl5o.cn
DELETE FROM `type` WHERE `fid`=6
這樣我們不就可以直接刪除{ausu}、{hp}?但是假設(shè){ausu}有一個(gè)子分類{a1},{a1}也有一個(gè)子分類{a2},如果不用遞歸我們就無法徹底刪除數(shù)據(jù)。
三、查找
1.查找{電腦}的子分類
復(fù)制代碼 代碼如下:www.hl5o.cn
SELECT * FROM `type` WHERE `fid`=2
2.查找{電腦}的所有子分類
復(fù)制代碼 代碼如下:www.hl5o.cn
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í)際數(shù)據(jù)應(yīng)用
在數(shù)據(jù)表添加一個(gè)字段`tid`,字段值為記錄所屬分類`type`表的id。必須是id不能是name,因?yàn)閚ame的值可能會(huì)改變。
例如查詢屬于{電腦}分類的商品
復(fù)制代碼 代碼如下:www.hl5o.cn
SELECT * FROM `goods` WHERE `tid`=2
注:代碼沒有運(yùn)行過可能會(huì)有錯(cuò)誤,但是思路是正確的,主要的是理解樹形結(jié)構(gòu),而不是記住代碼。
分享:優(yōu)化PHP代碼技巧的小結(jié)本篇文章是對(duì)優(yōu)化PHP代碼的技巧進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
相關(guān)PHP教程:
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-基于php無限分類的深入理解
。