主頁 > 知識(shí)庫 > ASP 無限級(jí)分類實(shí)現(xiàn)

ASP 無限級(jí)分類實(shí)現(xiàn)

熱門標(biāo)簽:Mysql連接數(shù)設(shè)置 團(tuán)購網(wǎng)站 科大訊飛語音識(shí)別系統(tǒng) Linux服務(wù)器 銀行業(yè)務(wù) 阿里云 服務(wù)器配置 電子圍欄

ASP遞歸無限級(jí)分類函數(shù)

復(fù)制代碼 代碼如下:

%
'函數(shù):getCatagory
'功能:獲得分類列表
'參數(shù):cat_arr -> 分類數(shù)組(Rscordset:id:分類編號(hào),pid:上級(jí)分類,classname:分類名稱,childs:子分類)
' 按此輸出些sql語句,用getRows獲取得到的數(shù)據(jù)
' cat_pid -> 上級(jí)分類編號(hào)
' cat_childs -> 下級(jí)分類編號(hào)
' cat_select -> 選擇的分類
' cat_dir -> 分類級(jí)別
'返回:返回分類列表(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=""分類級(jí)別:{$cat.dir} 分類編號(hào):{$cat.id} 分類上級(jí)編號(hào):{$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
%>

轉(zhuǎn)載的一個(gè)遞歸函數(shù),比較典型的應(yīng)用,沒有特別算法,目前我們一般常見的無限級(jí)分類函數(shù)均大同小異。簡單整理了一下,包括示例打包getCatagory.rar

*大類1
└二級(jí)小類1
└三級(jí)小類1
└四級(jí)小類1
└五級(jí)小類1
*大類2
└二級(jí)小類2
*大類3

數(shù)據(jù)庫說明:數(shù)據(jù)庫db.mdb,classTable表的結(jié)構(gòu):classid類別ID(自動(dòng)增長) parentid 父級(jí)ID 默認(rèn)為0 (0代表最高級(jí)) classname類別名,classdepth是為了記錄類別的級(jí)數(shù) ———————————————-
| classid| classname| parentid | classdepth |
———————————————-

主要代碼:

復(fù)制代碼 代碼如下:

//先取出最高級(jí)(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)
‘遞歸調(diào)用函數(shù),生成一個(gè)類別代碼
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 無限級(jí)分類實(shí)現(xiàn)思路
  • php實(shí)現(xiàn)無限級(jí)分類(遞歸方法)
  • php 無限級(jí)分類,超級(jí)簡單的無限級(jí)分類,支持輸出樹狀圖
  • php實(shí)現(xiàn)無限級(jí)分類查詢(遞歸、非遞歸)
  • php實(shí)現(xiàn)無限級(jí)分類
  • ThinkPHP無限級(jí)分類原理實(shí)現(xiàn)留言與回復(fù)功能實(shí)例
  • winform樹形菜單無限級(jí)分類實(shí)例
  • php+mysql實(shí)現(xiàn)無限級(jí)分類 | 樹型顯示分類關(guān)系
  • Asp.net 無限級(jí)分類實(shí)例代碼
  • thinkphp5實(shí)現(xiàn)無限級(jí)分類

標(biāo)簽:大理 廣元 衢州 棗莊 萍鄉(xiāng) 衡水 蚌埠 江蘇

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP 無限級(jí)分類實(shí)現(xiàn)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266