登录名:  密码:  验证码: 3173
设为首页 收藏本站 联系站长
2009年1月10日
农历戊子年(鼠)
腊月十五
 首页 | 最新上传 | 新闻 | 购物商场 | 招聘求职 | HTML学习 | java学习 | IT新闻 | 黑客技术 | 域名和空间 | 流量统计 | 故事小说
 GIF动画制作 | 图片素材 | 源码下载 | 书籍下载 | 视频资料 | ASP | 数据库 | PHP | 基本电脑知识 | 迅雷资源 | 兼职 | 组网工程
 英语学习 | FLASH专区 | ASP.NET | VB | 综合资源网 | 驱动下载 | 游戏下载 | 网站模板网页美工 | 韩文学习 | 论坛
 特别推荐:产品报价  漂亮网站网址  图片素材
  我要查找:  
欢迎您来这里。每天学一点,每天进步一点!
Google
 当前位置:首页 >> ASP  >> ASP
整理一个asp多级树型分类问题的解决方法
来源:  发表日期:2008年4月5日 作者: 

 编辑:admin 级别: 司令 浏览次数:601
】    

现在我们回头看看第四个问题:怎样得到某个分类下的所有产品。由于采用了位编码,现在问题变得很简单。我们很容易推算:某个产品属于某个类别的条件是 Product.FatherID&(Catalog.ID的特征码)=Catalog.ID。其中"&"代表位与算法。这在SQL  Server中是直接支持的。

举例来说:产品所属的类别为:1092787200,而当前类别为1092780032。当前类别对应的特征值为:4294950912,由于1092787200&4294950912=8537400,所以这个产品属于分类8537400。

我们前面已经给出了计算特征码的公式。特征码并不多,而且很容易计算,可以考虑在Global.asa中Application_OnStart时间触发时计算出来,存放在Application("Mark")数组中。
当然,有了特征码,我们还可以得到更加有效率的算法。我们知道,虽然我们采用了位编码,实际上还是一种顺序编码的方法。表现出第I级的分类编码肯定比第I+ 1级分类的编码要小。根据这个特点,我们还可以由FID得到两个特征码,其中一个是本级位特征码FID0,一个是上级位特征码FID1。而产品属于某个分 类FID的充分必要条件是:
Product.FatherID>FID0  and  Product.FatherID<FID1
下面的程序显示分类FID下的所有产品。由于数据表Product已经对FatherID进行索引,故查询速度极快:

<% 
REM  oConn---数据库连接,已经打开 
REM  FID---当前分类 
REM  FIDMark---特征值数组,典型的情况下为Application("Mark") 
REM  k---数组元素个数,也是分类的级数 
Sub  GetAllProduct(oConn,FID,FIDMark  byref,k) 
 REM  根据FID计算出特征值FID0,FID1 
 for  i=k  to  1 
   if  (FID  and  FIDMark  =  FID  )  then  exit 
 next 
  
 strSQL  =  "select  Name  from  Product  where  FatherID>"FIDMark(i)&"  and  FatherID<"FIDMark(i-1) 
 set  rsProduct=oConn.Execute(strSQL)%> 
 <UL><% 
 Do  While  Not  rsProduct.Eof%> 
   <LI><%=rsProduct("Name") 
 Loop%> 
 </UL><% 
 rsProduct.Close 
End  Sub 
%>


关于第5个问题、第6个问题,就留作习题吧。有了上面的位编码,一切都应该迎刃而解。 
感谢  21DIV  开发组供稿,本文版权(电子版及文字版)都归  21DIV  所有
其它站点转载请自行联系  21DIV
请支持原创站点

这是天极论坛的树型解决方案,是坛主烈云写的。

 

sub  MainList()显示主题帖 
ON  ERROR  RESUME  NEXT 
       set  rs=Server.CreateObject("ADODB.Recordset") 
       sql="select  *  from  "&bbs_id&"  where  lanp_level=1  order  by  lanp_subdate  DESC" 
       rs.Open  sql,conn,1,1 
Set  rs=  conn.Execute("bbs_level1  "&bbs_id&"") 
if  not  rs.eof  then 
       rs.pagesize=15 
       rs.AbsolutePage  =1 
       if  Request("page")<>""  then  rs.AbsolutePage  =Request("page") 
       RowCount  =rs.pagesize 
       session("pageccu")=rs.pagecount 
       Response.Write  "<ul>" 
       For  i=  0  To  15 
       If  rs.eof  Then  exit  for 
       Do  While  Not  rs.Eof  and  RowCount>0 
               Response.Write  "<li  class=tds>" 
               If  rs("bbs_zt")="1"  Then 
                               Response.Write  "<img  src=img/jh.gif>  " 
               Else   
               if  rs("lanp_icon")<>""  then  Response.Write  "<img  src=images/"  &rs("lanp_icon")&".gif>  " 
               End  If 
               Response.Write  "<a  href=disp.asp?uid="&nowid&"&lanp_id="&rs("lanp_id")&"&bbsid="&Request("bbsid")&">"&Replace(rs("lanp_title"),"  ","  ")&"</a>" 
               if  rs("lanp_size")=0  then 
                       Response.Write  "(空)" 
               else 
                       Response.Write  "("&rs("lanp_size")&"字)" 
               end  if 
               lanu_nickn=rs("lanu_nickn") 
               Response.Write  "(<a  href=userinfo.asp?uid=lan122545&target="&lanu_nickn&"  target=_b>"&lanu_nickn&"</a>  " 
               Response.Write  "<font  size=1>"&rs("lanp_date")&""  &"</font>" 
               Response.Write  "<font  color=226699>  阅读:"&rs("lanp_reads")  &")</font>" 
               If  DateDiff(  "d",rs("lanp_date"),DateAdd("d",-1,Now()))<0  Then 
                       Response.Write  "<img  src=images/new.gif  width=31  height=12>" 
               End  If 
               Response.Write  "</li>" 
               If  rs("lanp_reply")<>""    And  rs("lanp_reply")<>"0"  Then 
                
                       SubList  rs("lanp_reply"),rs("lanp_id") 
                       ccc=0 
               End  If 
               Response.Write  "<hr  style=height:1pt>" 
               RowCount=RowCount-1 
               rs.MoveNext 
               Next 
       Loop 
       Response.Write  "</ul>" 
       Response.Write("分页显示"&dd) 

分页: [1] [2] [3] [4] [5] [6] [7] [8] [9]
(编辑:网站学习网)
Google
 ·上一篇文章: 屏幕保护程序下载
 ·下一篇文章: 局域网内打印机共享设置
 该篇文章的评论
 暂无相关评论
 姓名:  邮箱:
 内容:
                
 相关文章
 · Microsoft VBScript 运行
 · 整理一个asp多级树型分类
 · DW网页设计100例94:在线
 · 如何实现添加到收藏夹
 · ASP源码下载
 · ASP多媒体视频教程专区
 · MM_preloadImages()问题
 · 用ASP创建多栏选项列表S
 · 如何把ASP编写成DLL
 · Windows XP 中IIS5安装文
 · OpenSchema 方法详
 最新上传文章
 · 使用 cookie 
 · Asp Object 之
 · 建立企业信息化 &n
 · 80后IT四少:媒体塑造了我
 · 我国企业电子商务交易总
 · asp连接带有密码的acces
 · 互联网应用广泛 电
 · Adobe Illustrator
 · delphi程序打包安装制作
 · 企业邮件管理有新招&nbs
 · toolbar图标:ToolBar上的

服务说明 | 关于网站 | 联系我们 | 友情链接
网站学习网欢迎您!
http://www.studywebgood.com
浙ICP备07030755号 
联系邮箱:shuizhilang@126.com 如本网站侵犯了您的版权,请马上通知我.