主页 > 知识库 > ASP 无限级分类实现

ASP 无限级分类实现

热门标签:Mysql连接数设置 团购网站 科大讯飞语音识别系统 Linux服务器 银行业务 阿里云 服务器配置 电子围栏

ASP递归无限级分类函数

复制代码 代码如下:

%
'函数:getCatagory
'功能:获得分类列表
'参数:cat_arr -> 分类数组(Rscordset:id:分类编号,pid:上级分类,classname:分类名称,childs:子分类)
' 按此输出些sql语句,用getRows获取得到的数据
' cat_pid -> 上级分类编号
' cat_childs -> 下级分类编号
' cat_select -> 选择的分类
' cat_dir -> 分类级别
'返回:返回分类列表(Option)

dim conn,cmd,rs,cat_arr
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" Server.MapPath("db1.mdb")
cmd.ActiveConnection = conn
cmd.CommandText = "Select * from cate order by id desc"
Set rs = cmd.Execute
cat_arr = rs.GetRows()
Set rs = Nothing
Set cmd = Nothing
Set conn = Nothing

getCatagory cat_arr,0,"","","","{$cat.dir}├─a href=""?id={$cat.id}"" title=""分类级别:{$cat.dir} 分类编号:{$cat.id} 分类上级编号:{$cat.pid} 分类名称:{$cat.name} 分类子分类:{$cat.childs}"">{$cat.name} /a>br />"vbcrlf

function getCatagory(byval cat_arr,byval cat_pid,byval cat_childs,byval cat_select,byval cat_dir,byval format)
dim i,tmp
if isArray(cat_arr) then
for i=0 to ubound(cat_arr,2)
if cat_arr(1,i) = cat_pid and instr("," cat_childs ",","," cat_arr(0,i) ",") = 0 then
tmp = format
if instr(tmp,"{$cat.dir}")>0 then tmp = replace(tmp,"{$cat.dir}",cat_dir)
if instr(tmp,"{$cat.id}")>0 then tmp = replace(tmp,"{$cat.id}",cat_arr(0,i))
if instr(tmp,"{$cat.pid}")>0 then tmp = replace(tmp,"{$cat.pid}",cat_arr(1,i))
if instr(tmp,"{$cat.name}")>0 then tmp = replace(tmp,"{$cat.name}",cat_arr(2,i))
if instr(tmp,"{$cat.childs}")>0 then tmp = replace(tmp,"{$cat.childs}",cat_arr(3,i))
response.write tmp
call getCatagory(cat_arr,cat_arr(0,i),cat_childs,cat_select,cat_dir "│",format)
end if
next
end if
end function
%>

转载的一个递归函数,比较典型的应用,没有特别算法,目前我们一般常见的无限级分类函数均大同小异。简单整理了一下,包括示例打包getCatagory.rar

*大类1
└二级小类1
└三级小类1
└四级小类1
└五级小类1
*大类2
└二级小类2
*大类3

数据库说明:数据库db.mdb,classTable表的结构:classid类别ID(自动增长) parentid 父级ID 默认为0 (0代表最高级) classname类别名,classdepth是为了记录类别的级数 ———————————————-
| classid| classname| parentid | classdepth |
———————————————-

主要代码:

复制代码 代码如下:

//先取出最高级(parentid=0)的分类

%
set conn=server.createobject("adodb.connection")
conn.open "Provider=Microsoft.Jet.Oledb.4.0;data source="server.MapPath("db.mdb")
set rs1=server.createobject("adodb.recordset")
sql1="select * from Classtable where parentid=0 order by classid"
rs1.open sql1,conn,1,1
if rs1.eof or rs1.bof then
response.write"还没分类!"
else
while not rs1.eof
id1=rs1("classid")
name1=rs1("classname")

response.write "*a href='class.asp?id="id1"name="name1"‘>"name1"/a>br>"
parentid1=rs1("parentid")
call reclass(id1)
rs1.movenext
wend
end if
rs1.close
set rs1=nothing


sub reclass(id)
‘递归调用函数,生成一个类别代码
set rs=server.createobject("adodb.recordset")
sql="select * from classtable where parentid="id
rs.open sql,conn,1,1
i=1
while not rs.eof
id0=rs("classid")
classname0=rs("classname")
parentid0=rs("parentid")
classdepth0=rs("classdepth")
brstr=""
for j=1 to classdepth0
brstr=" "brstr
next
response.write(brstr"└a href='class.asp?id="id0"name="classname0"‘>"classname0"/a>br>")
call reclass(id0)

rs.movenext
i=i+1
wend
rs.close
set rs=nothing
end sub

if request("a")="add" then
call add
end if
if request("name")>"" then
%>
table width="80%" align="center" cellpadding="0″ cellspacing="0″>
form action="class.asp?a=addid=%=request("id")%>" method="post">
tr>
td> /td>
td>在font color="#FF0000″>%=request("name")%>/font>添加小类/td>
/tr>
tr>
td>类别名:/td>
td>input name="classname" type="text" id="classname">/td>
/tr>
tr>
td> /td>
td>input type="submit" name="Submit" value="提交">/td>
/tr>
/form>
/table>
%end if
sub add '添加类别
id=request("id")
classname=request("classname")
set rs=server.createobject("adodb.recordset")
rs.open "select parentid,classdepth from classtable where classid="id,conn,1,1
parentid=rs(0)
classdepth=rs(1)+1
rs.close
set rs=nothing
sql="INSERT INTO classtable (classname,parentid,classdepth) values ('"classname"‘,"id","classdepth")"
conn.execute sql
response.Write"script>alert('添加成功!');location.href='class.asp';/script>"
end sub
%>

您可能感兴趣的文章:
  • mysql 无限级分类实现思路
  • php实现无限级分类(递归方法)
  • php 无限级分类,超级简单的无限级分类,支持输出树状图
  • php实现无限级分类查询(递归、非递归)
  • php实现无限级分类
  • ThinkPHP无限级分类原理实现留言与回复功能实例
  • winform树形菜单无限级分类实例
  • php+mysql实现无限级分类 | 树型显示分类关系
  • Asp.net 无限级分类实例代码
  • thinkphp5实现无限级分类

标签:大理 广元 衢州 枣庄 萍乡 衡水 蚌埠 江苏

巨人网络通讯声明:本文标题《ASP 无限级分类实现》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266