无图版
|
左右分栏
» 您尚未
登录
注册
|
搜索
|
朋友圈
|
帮助
社区服务
银行
朋友圈
搜索工具
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训
»
入门和基础知识
»
实用的傻瓜型无限分类法
交 易
投 票
本页主题:
实用的傻瓜型无限分类法
打印
|
加为IE收藏
|
收藏主题
|
上一主题
|
下一主题
meiwang12363
级别:
中级程序员
精华:
1
发帖:
1069
威望:
0 点
金钱:
0 PYMB
贡献值:
0 点
在线时间:8(小时)
注册时间:2007-04-26
最后登录:2007-09-04
实用的傻瓜型无限分类法
看过各种各样的无限分类[url=javascript:;]
方法
[/url],在头昏眼花之际,突然觉悟——分类这东西,一旦分好,几乎就不改变了。也就是说在[url=javascript:;]
数据库
[/url]中,什么inset、update的操作很少发生,绝大部分都是select操作。既然这样的话,我们可以在添加修改的时候做多一些额外的事,让查询尽量简单。让查询简单的一种方法是把所有的子类紧挨着放在父类的下面。这样的话,数据表只需要一个用来在查询的时候排序的order和一个表示级别的level字段就足够完成分类功能了。假设表如下:
create table `class` ( `id` int (10) NOT NULL AUTO_INCREMENT , `order` int (11) , `level` int (5) , `other` varchar (100) , PRIMARY KEY ( `id` ) )
在每次添加分类时,如果加在最后面,order值就是表中最大的那个order+1,如果插在中间,order就是上一个分类的order+1,然后后面的所有分类的order+1。至于是子类父类,就看level值了,反正order比自己小并且level比自己小(level一般是越小级别越大,0表示顶级)的最接近自己的那个就是老爹。
至于查询嘛,查询所有的时候只要"select * from class order by `order`"就行了;
如果只查询其中一个类和他的所有子类的话,会比较麻烦一点点,首先要找出order比自己大level和自己相同的那个类的order号,假设等于nextorder吧,然后where order=selforder就找出来了,sql厉害的用子查询什么的也可以一下子找出来。
Posted: 2007-08-30 13:36 |
[楼 主]
快速跳至
>> php培训
|- 培训咨询和报名
>> 学员专区
|- 学员交流区
>> 开源项目
|- 项目开发
|- OSC技术交流
|- CMS开源项目研究
|- 下载
>> PHP和web开发
|- 入门和基础知识
|- PHP中高级
|- 网站SEO
|- PHP资源共享
|- YUI,ext JS
|- 数据库应用
|- 操作系统(Windows、Linux)
|- 英语学习
|- 数据结构和算法
|- web2.0
>> 信息发布
|- 招聘和求职
>> 娱乐论坛
|- BT软件&教程发布
|- BT影视&音乐
|- 娱乐乐园
>> PHP世纪
|- 站务管理
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训
»
入门和基础知识
今日推荐
隐藏
显示
关闭
时:11-21 06:05
Copyright © 2006 phpwhy.com 权
ICP05060669
-
系