php 无穷分类

    添加时间:2013-5-29 点击量:

    无穷分类是实际开辟中经常用到的一种数据布局,一般我们称之为树形布局。


    题设:类似淘宝的商品分类,可以在随便率性分类设置其子类。



    一、创建`type`数据表


    `id` 自增长


    `fid` int(11) 默认(0) ,父节点id


    `name` varchar(50),分类名称



    CREATE TABLE `type` (
    
    `id`
    int11NOT NULL AUTO_INCREMENT,
    `fid`
    int11NOT NULL DEFAULT 0
    `name`
    varchar50NOT NULL
    PRIMARY KEY (`id`)



    二、添加


    我们先添加几个分类



    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL0);
    
    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL0电脑);
    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL0鞋子);
    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL0衣服);


    这里fid=0是代表分类



    接着我们为{电脑}添加几个个子分类



    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL2台式), (NULL2笔记本);


    这里fid=2,2这个id是分类{电脑}的id,若是是添加鞋子的子分类则fid=3


    同理我们为笔记本添加子分类则fid=6



    INSERT INTO `type` (`id`, `fid`, `name`) VALUESNULL6ausu), (NULL6hp);



    三、删除


    若是我们想删除{笔记本}这个分类,很简单



    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


    如许我们不就可以直接删除{ausu}、{hp}?然则假设{ausu}有一个子分类{a1},{a1}也有一个子分类{a2},若是不消递归我们就无法删除数据。



    三、查找


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



    四、实际数据应用


    在数据表添加一个字段`tid`,字段值为记录所属分类`type`表的id。必须是id不克不及是name,因为name的值可能会改变。


    例如查询属于{电脑}分类的商品



    SELECT  FROM `goods` WHERE `tid`=2



    注:代码没有运行过可能会有错误,然则思路是正确的,首要的是懂得树形布局,而不是记住代码。

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: