麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
Mysql使用浮点型字段排序法实现无限分类(树型论坛)
悬赏分:20 - 2007年08月17日

Mysql使用浮点型字段排序法实现无限分类(树型论坛)
Joe Teng (Joe_Teng@hotmail.com)

优点无需要使用递归或字符建象形树,速度快。

表格构
CREATE TABLE `menus` (
`id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`mainid` INT( 10 ) UNSIGNED NOT NULL ,
`parentid` INT( 10 ) UNSIGNED NOT NULL ,
`order` FLOAT UNSIGNED NOT NULL ,
`level` SMALLINT( 5 ) UNSIGNED NOT NULL ,
`info` VARCHAR( 128 ) NOT NULL ,
INDEX ( `mainid` , `parentid` , `order` , `level` ) ,
UNIQUE (
`id`
)
) TYPE = MYISAM ;

//添加根类
mainid = lasted mainid + 1
parentid = 0
order = 0
level = 0

//添加子类
取得父类A_id A_mainid A_parentid A_order A_level
取得同父同级别下最后一个order
SELECT L_order FROM `menus` where parentid = A_id ;
if ( L_order == NULL ) L_order = A_order ;

取得与父类id同级但order处于父类之后的第一个类别的order
SELECT B_order FROM `menus` WHERE `parentid` = A_parentid AND order < A_order ;
if ( B_order == NULL ) //表明添加的子类是排最后的一个
{
new_order = ceil ( L_order + 1 ) ;
}
else
{
new_order = number_format( ( L_order + B_order )/2 , 14 );
}

// 输出
SELECT * FROM `menus` ORDER BY `mainid` ASC , `order` ASC ;


以上是菜单的表示方法。
如果是要实现树型论坛的话,其中的mainid便是主题id了,道理是一样的。

Enjoy yourself.
Joe Teng
2005/6/12

提问者:Joe Teng   08-17 16:04
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
61 + 26 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM