• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    ASP 无限级分类实现

    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实现无限级分类
    上一篇:可以应用到马克斯电影站生成Rss Feed的代码
    下一篇:从数据库中读取记录横向排列
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    ASP 无限级分类实现 ASP,无限,级,分类,实现,ASP,