无限分类是实际开发中经常用到的一种数据结构,一般我们称之为树形结构。
题设:类似淘宝的商品分类,可以在任意分类设置其子类。
一、创建`type`数据表
`id` 自增长
`fid` int(11) 默认(0) ,父节点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', '衣服');
复制代码 代码如下:
INSERT INTO `type` (`id`, `fid`, `name`) VALUES (NULL, '2', '台式'), (NULL, '2', '笔记本');
复制代码 代码如下:
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);//执行操作
复制代码 代码如下:
DELETE FROM `type` WHERE `fid`=6
复制代码 代码如下:
SELECT * FROM `type` WHERE `fid`=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);
复制代码 代码如下:
SELECT * FROM `goods` WHERE `tid`=2