level 4
Function class_tree(parentid,class_title)
Dim Rs_tree,Str
set rs_tree = server.CreateObject("adodb.recordset")
sql_tree="Select * From product_class Where id="&parentid
rs_tree.open sql_tree,conn,1,3
do while Not Rs_tree.Eof
Str= " > <a href=""?Parentid="&Rs_tree("Id")&""">" & Rs_tree("Title") & "</a>"
rs_tree.movenext
loop
Str = class_tree(rs_tree("id"))&Str
Rs_tree.Close
Set Rs_tree=Nothing
class_tree=Str
End Function
2012年05月28日 06点05分
2
level 7
你数据库中应该有一个parentid字段吧,用于标识该分类的上级ID是多少,所以你的查询语句应该是
select * from product_class where id =$parentid
然后判断数据库中是否有该记录,再判断该条记录中parentid字段值是否为0,0则表示该分类是根分类了,退出循环,不为0则继续查询上级分类。
这条语句:
Str = class_tree(rs_tree("id"))&Str
就应该改成
Str = class_tree(rs_tree("parentid"))&Str
整个代码改完应该是这样子
Function class_tree(parentid)
Dim Rs_tree,Str,sql_tree
set rs_tree = server.CreateObject("adodb.recordset")
sql_tree="Select * From product_class Where id="&parentid
rs_tree.open sql_tree,adconn,1,3
if not Rs_tree.Eof then
Str= " > <a href=""?Parentid="&Rs_tree("Id")&""">" & Rs_tree("Title") & "</a>"
if Rs_tree("parentid") <>0 then Str = class_tree(rs_tree("parentid"))&Str
end if
Rs_tree.Close
Set Rs_tree=Nothing
class_tree=Str
End Function
2012年05月28日 16点05分
5
level 4
恩,我的查询语句是对的,为什么不能用do while 循环呢,你的我试了一下可以了
2012年05月29日 00点05分
6