ASP代码问题 ,现在是循环里面的<li>现在想循环两次里面的循环一次外面的 以此类推 请教高手
<LI><ULclass=listSubNavigationBody><%setrsb=server.CreateObject("adodb.recordset")sql...
<LI>
<UL class=listSubNavigationBody>
<%
set rsb=server.CreateObject("adodb.recordset")
sqlb="select * from bigclass order by bigclassid asc"
rsb.open sqlb,conn,1,3
%>
<LI>
<UL class=listSubNavigationColumn174>
<%
do while not rsb.eof
%>
<LI class=mainNavigationItemOuter><A
href="Product.asp?BigClassName=<%=rsb("bigclassname")%>"><B><%=rsb("bigclassname")%></B></A> </LI>
<%
set rss=server.CreateObject("adodb.recordset")
sqls="select * from smallclass where bigclassname='"&rsb("bigclassname")&"' order by smallclassid asc"
rss.open sqls,conn,1,3
do while not rss.eof
%>
<LI class=mainNavigationItemInner><A
href="Product.asp?BigClassName=<%=rsb("bigclassname")%>&Smallclassname=<%=rss("smallclassname")%>"><%=rss("smallclassname")%></A> </LI>
<%
rss.movenext
loop
rss.close
set rss=nothing
%>
<%
rsb.movenext
loop
%>
</UL></LI>
<%
rsb.close
set rsb=nothing
%>
</UL></LI> 展开
<UL class=listSubNavigationBody>
<%
set rsb=server.CreateObject("adodb.recordset")
sqlb="select * from bigclass order by bigclassid asc"
rsb.open sqlb,conn,1,3
%>
<LI>
<UL class=listSubNavigationColumn174>
<%
do while not rsb.eof
%>
<LI class=mainNavigationItemOuter><A
href="Product.asp?BigClassName=<%=rsb("bigclassname")%>"><B><%=rsb("bigclassname")%></B></A> </LI>
<%
set rss=server.CreateObject("adodb.recordset")
sqls="select * from smallclass where bigclassname='"&rsb("bigclassname")&"' order by smallclassid asc"
rss.open sqls,conn,1,3
do while not rss.eof
%>
<LI class=mainNavigationItemInner><A
href="Product.asp?BigClassName=<%=rsb("bigclassname")%>&Smallclassname=<%=rss("smallclassname")%>"><%=rss("smallclassname")%></A> </LI>
<%
rss.movenext
loop
rss.close
set rss=nothing
%>
<%
rsb.movenext
loop
%>
</UL></LI>
<%
rsb.close
set rsb=nothing
%>
</UL></LI> 展开
3个回答
展开全部
如果是我绝对不会这么做的!这不是循环两次,而是嵌套循环!是两层!而非两次!
嵌套循环是一个非常拉性能的东西!所以一般情况下不要用为好!
假设你外层是有8个选项,每个选项中又平均有8个选项,总共72条数据(内层加外层)让你循环了8次,加上外层的1次,共计九次向数据库取值,这样数据库IO性能一定被托的很低!
同时外层在等待内层时必须要两连接,连接池内被占用两个连接,也就是说,其他的全部给你放开,不考虑缓存情况,一个连接池内允许你有10条链接,你只能让同时5个用户在线!什么IIS链接数什么的在这个性能面前完全低头,将成为网站最大的速度效能杀手!
那么,为什么不使用两次查询呢?
第一次查询只查询外层的所有,然后全部写上。
第二次查询只查询内层的所有选项,然后根据不同的外层标识,利用程序加到外层项目下!
这样两层数据只在数据库链接中占用一个即可!
但这样要求你最好写成方法,这种客货混装(服务器代码与客户代码混写) 形式,必须要用js去添加的,对于引擎优化上可能有一定程度的影响,而且对于客户来说也不太友好!
最后的结论是:不要使用循环查询,这种方法往往是性能的最大杀手!
嵌套循环是一个非常拉性能的东西!所以一般情况下不要用为好!
假设你外层是有8个选项,每个选项中又平均有8个选项,总共72条数据(内层加外层)让你循环了8次,加上外层的1次,共计九次向数据库取值,这样数据库IO性能一定被托的很低!
同时外层在等待内层时必须要两连接,连接池内被占用两个连接,也就是说,其他的全部给你放开,不考虑缓存情况,一个连接池内允许你有10条链接,你只能让同时5个用户在线!什么IIS链接数什么的在这个性能面前完全低头,将成为网站最大的速度效能杀手!
那么,为什么不使用两次查询呢?
第一次查询只查询外层的所有,然后全部写上。
第二次查询只查询内层的所有选项,然后根据不同的外层标识,利用程序加到外层项目下!
这样两层数据只在数据库链接中占用一个即可!
但这样要求你最好写成方法,这种客货混装(服务器代码与客户代码混写) 形式,必须要用js去添加的,对于引擎优化上可能有一定程度的影响,而且对于客户来说也不太友好!
最后的结论是:不要使用循环查询,这种方法往往是性能的最大杀手!
追问
大哥,我要的是多行多列的显示这些数据。。
追答
那介布局方面的,要与数据方面分开,可以用CSS控制,不要让数据去控制!
展开全部
性能什么的先不考虑,最快实现你的要求的方法是:
在
<%
rss.movenext
loop
rss.close
set rss=nothing
%>
中间加入movefirst方法:
<%
rss.movenext
loop
rss.movefirst '回到rss的第一条记录
' 进行第二次循环
do while not rss.eof
'......
rss.movenext
loop
' 如果还要进行第三次、第四次循环,就再次rss.movefirst,再次do-while-loop
rss.close
set rss=nothing
%>
在
<%
rss.movenext
loop
rss.close
set rss=nothing
%>
中间加入movefirst方法:
<%
rss.movenext
loop
rss.movefirst '回到rss的第一条记录
' 进行第二次循环
do while not rss.eof
'......
rss.movenext
loop
' 如果还要进行第三次、第四次循环,就再次rss.movefirst,再次do-while-loop
rss.close
set rss=nothing
%>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我同意kusirp21的说法,用CSS去布局而不是用代码去布局
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询