asp无限分类循环问题,
----------------------------------------------------------------FunctionViewClass(top...
----------------------------------------------------------------
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &" <a href='User_Class.asp?action=classadd&topid="&Rss("id")&"'>增加</a> <a href='User_Class.asp?action=classedit&topid="&Rss("id")&"'>修改</a> "
%>
<a href="#"id")%>';return true;}return false;}">删除</a>
<%
Response.Write ViewClass(Rss("id"),k+1)
Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function
Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function
————————————————————————————————————
这个是函数调用
-----------------------------------------------------------------------
<%
Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font> <a
href='User_Class.asp?action=classadd&topid="&Rs("ID")&"'>增加</a> <a href='User_Class.asp?
action=classedit&topid="&Rs("ID")&"'>修改</a></td></tr>"
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>
------------------------------------------------------------------------
这个这段代码显示的结果。
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
正确的应该是
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|--南京新闻 增加 修改 删除 (为什么这个不显示呢?)|
-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
库记录如下:
ID CLASSNAME TOPID ROOTID NUM README
71 国内新闻 0 0,71
73 北京新闻 71 0,71,73
76 国际新闻 0 0,76
77 美国新闻 76 0,76,77
79 南京新闻 71 0,71,79
80 娱乐新闻 73 0,71,73,80
81 体育新闻 73 0,71,73,81 展开
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &" <a href='User_Class.asp?action=classadd&topid="&Rss("id")&"'>增加</a> <a href='User_Class.asp?action=classedit&topid="&Rss("id")&"'>修改</a> "
%>
<a href="#"id")%>';return true;}return false;}">删除</a>
<%
Response.Write ViewClass(Rss("id"),k+1)
Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function
Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function
————————————————————————————————————
这个是函数调用
-----------------------------------------------------------------------
<%
Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font> <a
href='User_Class.asp?action=classadd&topid="&Rs("ID")&"'>增加</a> <a href='User_Class.asp?
action=classedit&topid="&Rs("ID")&"'>修改</a></td></tr>"
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>
------------------------------------------------------------------------
这个这段代码显示的结果。
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
正确的应该是
|-国内新闻 增加 修改
|--北京新闻 增加 修改 删除
|--南京新闻 增加 修改 删除 (为什么这个不显示呢?)|
-国际新闻 增加 修改
|--美国新闻 增加 修改 删除
库记录如下:
ID CLASSNAME TOPID ROOTID NUM README
71 国内新闻 0 0,71
73 北京新闻 71 0,71,73
76 国际新闻 0 0,76
77 美国新闻 76 0,76,77
79 南京新闻 71 0,71,79
80 娱乐新闻 73 0,71,73,80
81 体育新闻 73 0,71,73,81 展开
展开全部
谢谢楼主给出的问题,我闲着没事自己重写了一下楼住的例子,代码如下。
表结构我是参照楼主的表来设计的:
NUMID(我加了个NUMID用来记录流水号,其他一样)
ID
CLASSNAME
TOPID ROOTID
NUM
README
实现代码如下(为了方便,我用的ACCESS数据库,所有操作都在一个页面实现)
<%
db_path= server.MapPath("Tree.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&db_path
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'connstr="driver={microsoft access driver (*.mdb)};uid=admin;pwd=123456;dbq="&db_path
conn.open connstr
%>
<script>
function showTr(vv)
{
var tr=document.getElementById(vv);
if(tr.style.display=="none")
{
tr.style.display=''
}
else
{
tr.style.display='none'
}
}
</script>
<%
action=request("action")
select case action
case "ADD"
id=request("id")
classname=request("classname")
set rs=conn.execute("select max(id) from class")
if not rs.eof then
maxid=rs(0)+1
end if
rs.close
set rs=nothing
conn.execute("insert into Class(ID,CLASSNAME,TOPID,ROOTID,README) values("&maxid&",'"&classname&"',"&id&","&maxid&",0)")
case "UPDATE"
id=request("id")
classname=request("classname")
conn.execute("update class set classname='"&classname&"' where id="&id)
case "DELETE"
conn.execute("delete from class where numId="&request("numId"))
end select
%>
<%
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rss("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>
<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k)%><input size="10" type='text' name="className" value="<%=rss("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &" <a href='#' onclick=""showTr('tr"&rss("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rss("numid")&"'>修改</a> <a onclick=""return confirm('你确定删除吗?');"" href='output_tree.asp?action=DELETE&numId="&rss("numId")&"' >删除</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=rss("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k+1)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Response.Write ViewClass(Rss("id"),k+1)
Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function
Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function
Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rs("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>
<input type="hidden" value="<%=rs("id")%>" name="id"/>
|-<input type="text" name="className" size="10" value="<%=rs("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font><a href='#' onclick=""showTr('tr"&Rs("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rs("numid")&"'>修改</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=Rs("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=Rs("id")%>" name="id"/>
|-<%=tmp(0)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>
具体源码:http://download.csdn.net/source/965103
表结构我是参照楼主的表来设计的:
NUMID(我加了个NUMID用来记录流水号,其他一样)
ID
CLASSNAME
TOPID ROOTID
NUM
README
实现代码如下(为了方便,我用的ACCESS数据库,所有操作都在一个页面实现)
<%
db_path= server.MapPath("Tree.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&db_path
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'connstr="driver={microsoft access driver (*.mdb)};uid=admin;pwd=123456;dbq="&db_path
conn.open connstr
%>
<script>
function showTr(vv)
{
var tr=document.getElementById(vv);
if(tr.style.display=="none")
{
tr.style.display=''
}
else
{
tr.style.display='none'
}
}
</script>
<%
action=request("action")
select case action
case "ADD"
id=request("id")
classname=request("classname")
set rs=conn.execute("select max(id) from class")
if not rs.eof then
maxid=rs(0)+1
end if
rs.close
set rs=nothing
conn.execute("insert into Class(ID,CLASSNAME,TOPID,ROOTID,README) values("&maxid&",'"&classname&"',"&id&","&maxid&",0)")
case "UPDATE"
id=request("id")
classname=request("classname")
conn.execute("update class set classname='"&classname&"' where id="&id)
case "DELETE"
conn.execute("delete from class where numId="&request("numId"))
end select
%>
<%
Function ViewClass(topid,k)'树型列表显示分类名
Set Rss = Conn.Execute("select * from Class where topid="&topid&" order by num,id")
Do While Not Rss.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rss("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>
<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k)%><input size="10" type='text' name="className" value="<%=rss("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='20'>|-" & tmp(k) &""& Rss("ClassName") &" <a href='#' onclick=""showTr('tr"&rss("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rss("numid")&"'>修改</a> <a onclick=""return confirm('你确定删除吗?');"" href='output_tree.asp?action=DELETE&numId="&rss("numId")&"' >删除</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=rss("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=rss("id")%>" name="id"/>
|-<%=tmp(k+1)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Response.Write ViewClass(Rss("id"),k+1)
Rss.MoveNext
Loop
Rss.close
set Rss = nothing
End Function
Function tmp(n)'显示缩进符号
For i = 0 To n
tmp = tmp & "-"
Next
End Function
Response.Write("<table border='0' cellspacing='0' cellpadding='0' width='300'>")
Set Rs = Conn.Execute("select * from Class where topid=0 order by num,Id")
Do While Not Rs.EOF
if trim(request("caozuo"))="classUpdate" and trim(Rs("numid"))=trim(request("numid")) then%>
<form action="?action=UPDATE" method="post">
<tr>
<td>
<input type="hidden" value="<%=rs("id")%>" name="id"/>
|-<input type="text" name="className" size="10" value="<%=rs("className")%>"/>
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
else
Response.Write "<tr><td height='25'>|-<font color='red'>" & Rs("ClassName") & "</font><a href='#' onclick=""showTr('tr"&Rs("id")&"');"">增加</a> <a href='output_tree.asp?caozuo=classUpdate&numid="&Rs("numid")&"'>修改</a></td></tr>"
%>
<form action="?action=ADD" method="post">
<tr id='tr<%=Rs("id")%>' style='display:none;'>
<td>
<input type="hidden" value="<%=Rs("id")%>" name="id"/>
|-<%=tmp(0)%><input size="10" type='text' name="className" />
<input type="submit" value="保存" /> <input type="button" value="取消" onclick="window.location.href='output_tree.asp'"/>
</td>
</tr>
</form>
<%
end if
Call ViewClass(Rs("ID"),0)
Rs.MoveNext
loop
Rs.Close
set Rs=nothing
Response.Write("</table>")
%> </td>
</tr>
</table>
具体源码:http://download.csdn.net/source/965103
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询