PHP 无限级分类算法原理及实例演示
1、原理:
什么是无限分类呢?就像 windows 下新建一个文件夹,在新建的文件夹下又可以
新建 一个文件夹,这样无限循环下去,无限分类也是这样,父类可以分 出它子类,子
类又 可以分出它的子类,这样一直无限循环下去。 那 PHP 又是如何实现它的无限分
类的呢?如何把它的各个分类一一列出来呢? 首先我们假设有这样的一个三级分类,
新闻→PHP 新闻→PHP6.0 出来了。 如果我们要查找“PHP6.0 出来了”这条新闻,我们
先点击新闻,然后再点击 PHP 新闻 就可以查出来了,也就是说我们可以通过祖父类一
级一级地往下找,反 过来我们只要 知道一个子类的父类,就可以把它查找出来了。这
样我们在设计数据库时就可以多设 计一个父类 id 的字段就可以实现无限分类的功能了。
view plaincopy to clipboardprint? // 我们建一个表"class" CREATE TABLE `class` ( `id`
int(11) NOT NULL auto_increment COMMENT ' 分 类 id', `f_id` int(11) NOT NULL
COMMENT '父 id', `name` varchar(25) collate gbk_bin NOT NULL COMMENT '分类名称',
PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=gbk
COLLATE=gbk_bin AUTO_INCREMENT=1 ; //首先我们往数据库里插入‘新闻’这个大分
类,因为‘新闻’是最大分类,上面没有父类了,所以我把它的 f_id 设置为 0。 INSERT
INTO `class` (`id`, `f_id`, `name`) VALUES(1, 0, '新闻'); //id 这个字段是自动增长的,可
以不写值。 //然后我们再往数据库里插入‘PHP 新闻’这个分类,它的父类‘新闻’的 id 是
1,所以它的 f_id 设置为 1。 INSERT INTO `class` (`id`, `f_id`, `name`) VALUES(2, 1,
'PHP 新闻'); //然后我们再往数据库里插入‘PHP6.0 出来了’这个分类,它的父类‘PHP 新
闻 ’ 的 id 是 2 , 所 以它 的 f_id 设 置 为 2 。 INSERT INTO `class` (`id`, `f_id`, `name`)
VALUES(3, 2, 'PHP6.0 出来了'); //同理,我们可以这样一直往下插入分类,也就达到了
无限分类。 //我们可以发现插入一个分类的原则关键是找到这个分类的父类的 id,然
后作为这个分类的 f_id 字段的值。 //假设要插入跟‘新闻’同一个级别的分类‘技术’,也
就是说它也是最大分类,上面没有父类了,那么它的 f_id 也设置为 0; INSERT INTO
`class` (`id`, `f_id`, `name`) VALUES(4, 0, '技术'); //在‘技术’下面又有一个分类‘PHP 技术’,
那么我们怎么插入呢,首先找到‘PHP 技术’的父类‘技术’的 id,然后作为自己的 f_id 字
评论3
最新资源