首页 美女贴图 网络日记 重庆租房 搜索指南 网络电视 飘网音乐 飘网博客 精彩网址 友情链接 飘网地图 本站留言
飘网中国
专题:网络营销 | 网站设计 | QQ技巧 | 搜索优化 | 菜鸟进阶 | 病毒攻防 | 网络技术 | 系统应用 | 本站作品 | 常用软件 | 工具软件 |
飘网中国>>网站设计>>正文

用整数和正则实现无限级分类的方法

编辑:Admin 来源:落伍者 更新:2007-11-9 点击:
【字体:

摘要:对于这种这种无限级分类方法,目前我还处于实验阶段,可行性和执行效率还没有进行过深入的研究,发明的无限级分类方法。也许先前就已经有人发明过了。
关键字:正则 无限级分类 
正文:
  时隔N久,不常来的我又厚着脸皮来了,呵呵,首先十分感谢大家对《 (原创+首发) 30分钟学会用PHP写带数据库的简单通讯录 [连载结束] 》一帖的支持。

  这次我为大家带来一种我自己发明的无限级分类方法。也许先前就已经有人发明过了,但我不知道,不过这的确是我自己想出来的,我就不要脸的暂时说是我发明的吧,呵呵。

  继续引用上篇文章的开场白:

  我接触PHP也不是很久,所以有什么不足的地方,欢迎各位指正,让大家见笑了。

  对于这种这种无限级分类方法,目前我还处于实验阶段,可行性和执行效率还没有进行过深入的研究,欢迎大家探讨,如果还不错的话,我们就可以把它运用到实战当中去了。事实上,我自己已经有此打算,呵呵。

  很多人将无限级分类神化了,因为在实际运用当中,用到十级以上的就已经很少见了。人们需要的不是“无限”,而是需要避免在以后更多的分级出现时,不至于给程序和数据库大换血,那可是很恐怖的事情啊。

  这里我们只讨论数据库设计部分,至于程序设计部分,有时间我们再单独拿出来讨论。看过很多无限分类的方法,都比较复杂且难以理解,我的这种方法原理实际上很简单,一目了然,好了,闲话不说了,我们来看看它的原理。

  我们以 “*” 号代表第几个分类,用 “_” 代表分类的级别:
  *(一级分类)
  *_*(二级分类)
  *_*_*(三级分类)
  ……
  以此推类(无限分类)

  代入整数后,我们可以精确的得到分类,如:

  18 (第18个一级分类)
  20_50 (第20个一级分类下的第50个二级分类)
  128_35_1 (第128个一级分类下的第35个二级分类下的第1个三级分类)
  ……
  以此推类(第N个N级分类下的N级分类下的……)

  我们来建一个最基本的“test”表来实验一下,三个字段就可以了:

    id(int)     code(varchar)    name(varchar)
      自然排序      分类代码           分类名称

  当然如果真要变态的搞成“无限”的话,把code设为TEXT好了,其实varchar就绰绰有余了,呵呵。

  OK,我们开始做实验,记住我们的口号是“整数”和“正则”,我们先来查询所有的一级类别吧,由于一级类别全部由整数构成,那我们的SQL语句就应该这样写:SELECT * FROM `test` WHERE `code` REGEXP '^[1-9]+$';

  哇哈哈,成功了,不错的开始,那我们再来查查“图片”的二级分类看看,二级分类应该有1个 “_” 号,而“图片”又是第2个一级分类,所以我们的SQL语句就应该这样写:SELECT * FROM `test` WHERE `code` REGEXP '^2_[1-9]+$';


  呀呵呵,又成功了,应该还是可以用的,最后我们来查查“新闻”的三级别分类看看,三级分类应该有2个 “_” 号,而“新闻”又是第1个一级分类,加上“国际”是第1个二级分类,所以我们的SQL语句就应该这样写:SELECT * FROM `test` WHERE `code` REGEXP '^1_1_[1-9]+$'

  咿嘻嘻,再次成功了,大概是没有什么问题了。好了,其他的实验就不再一一列举了。大家有兴趣的话,可以也自己去试试看,试出问题是最好的了,因为我们总是期望问题出现在测试中,而不是正式的使用过程中。

  我们可以发现,在SQL语句中,所用的“正则”是有一定规律的“^”开头、“[1-9]+”中间、“$”结尾。再结合“*”和“_”的规律,那么动动脑筋写程序就不是什么问题了,因为有“一定规律”的事物,用程序实现起来往往不是那么麻烦。

  至于用程序实现插入、修改、删除、排序等等,如果有时间的话,我再写[程序设计设计篇]吧。那么[数据库设计篇]到此为止,感谢大家浪费宝贵时间来看了一下。

  任何无限级分类的方法都有自己的优点和缺陷,我不指望我的这种方法能有多好,能够给大家派上用场,只希望能够为大家提供一条新的思路,一种耳目一新的感觉,说不定大家看了之后,由此方法联想到更好的方法呢?呵呵。

  若有什么不足或错误的地方,希望大家批评指正。

  还是那句话:自知这种文章多如牛毛,再烂好歹也是原创,所以……各位口下留情,小弟知错了,呵呵。

上一篇:半小时学会PHP带数据库的简单通讯录
下一篇:如何防范Cookies欺骗漏洞的方法
最新文章 更多
推荐文章 更多
热门文章 更多
© 2005-2010 飘网中国 版权所有
站长邮箱:①LCC-749AT163.com ②FlymornATgmail.com(AT改为@)
如转载时,请注明出处;本站部分资源来自网络,如有侵权,请来信说明;飘易文章系统 HTML版.
渝ICP备05000119号