标题: [求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等 [打印本页] 作者: 攸哉vs攸哉 时间: 2010-1-13 07:06 标题: [求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等 我自己写的代码,是通过选择年份来查询成员.可无法查找出记录,只能显示上一页下一页那几个导航,求助高手帮忙!!
以下是主要代码
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn.asp" -->
<%
dim sql,pgno,pgsz,pgct
sql="select * from mytable where year="&Cint(request.QueryString("year") )
set rs=server.CreateObject("adodb.recordset")
rs.pagesize=2
rs.open sql,conn,1,1
if rs.eof then '如果没有相应记录
response.write "对不起,没有匹配的记录<br>"
end if
last=rs.recordcount mod rs.pagesize '最后一页是否有记录
if last=0 then
pgct=int(rs.recordcount/rs.pagesize)
else pgct=int(rs.recordcount/rs.pagesize)+1
end if
pgno=request.QueryString("pgno") '取得当前页
if pgno=""or pgno<1 then
pgno=1
end if
do while not rs.eof and rs.bof '如果有记录
rs.absolutepage=page
response.Write"<table width=335 border=0 align=center cellpadding=0 cellspacing=2 class=table>" '以表格显示记录
response.Write"<tr><td>姓名:</td></tr><tr><td>"&rs("name")&"</td></tr>"
response.Write"<tr><td>性别:</td></tr><tr><td>"&rs("sex")&"</td></tr>"
rs.movenext
pgno=pgno+1
loop
rs.close()
set rs=nothing
conn.close
set conn=nothing
response.write"<div align=center><a href=search.asp?pgno="
response.write pgno-1
response.write">上一页</a> <a href=search.asp?pgno="
response.write pgno+1
response.write">下一页</a> <a href=search.asp?pgno=1>第一页</a>"
response.write"<a href=search.asp?pgno="
response.write pgct
response.write"> 最后一页</a> 共"
response.write pgct
response.write"页 当前为第"
response.write pgno
%>页</td>作者: 爱你 时间: 2010-1-13 07:06
怎么没有人啊,作者: 陈君 时间: 2010-1-13 07:06
do while not rs.eof and rs.bof '如果有记录
改成do while not rs.eof and not rs.bof
试试作者: ︶ぺ雨湮ㄣ 时间: 2010-1-13 07:06
我上面写的错了
应该是do while not rs.eof作者: 小新就是我 时间: 2010-1-13 07:06
do while not rs.eof and rs.bof '如果有记录
rs.absolutepage=page
response.Write"<table width=335 border=0 align=center cellpadding=0 cellspacing=2 class=table>" '以表格显示记录
response.Write"<tr><td>姓名:</td></tr><tr><td>"&rs("name")&"</td></tr>"
response.Write"<tr><td>性别:</td></tr><tr><td>"&rs("sex")&"</td></tr>"
rs.movenext
pgno=pgno+1
loop
分页循环的问题就不小,
分页的记录集就不能用Do while或Do Until的方式来完全循环
正确的循环方式为
Dim iPage
For iPage=1 To rs.Pagesize
response.Write"<table width=335 border=0 align=center cellpadding=0 cellspacing=2 class=table>" '以表格显示记录
response.Write"<tr><td>姓名:</td></tr><tr><td>"&rs("name")&"</td></tr>"
response.Write"<tr><td>性别:</td></tr><tr><td>"&rs("sex")&"</td></tr>"
rs.MoveNext
IF rs.EOF Then
Exit For
End IF
Next
还有就是rs.absolutepage=page 这句应该写在rs.Open方法后面和循环外面,该语句只在网页载入时执行一次。
该完后应该是
if pgno=""or pgno<1 then
pgno=1
end if
rs.absolutepage=page
For iPage=1 To rs.Pagesize
response.Write"<table width=335 border=0 align=center cellpadding=0 cellspacing=2 class=table>" '以表格显示记录
response.Write"<tr><td>姓名:</td></tr><tr><td>"&rs("name")&"</td></tr>"
response.Write"<tr><td>性别:</td></tr><tr><td>"&rs("sex")&"</td></tr>"
rs.MoveNext
IF rs.EOF Then
Exit For
End IF
Next作者: ♀鈊亂ゞ鎵伙 时间: 2010-1-13 07:07
response.write"<div align=center><a href=search.asp?pgno="
response.write pgno-1
response.write">上一页</a> <a href=search.asp?pgno="
response.write pgno+1
response.write">下一页</a> <a href=search.asp?pgno=1>第一页</a>"
response.write"<a href=search.asp?pgno="
response.write pgct
response.write"> 最后一页</a> 共"
response.write pgct
response.write"页 当前为第"
response.write pgno
还有问题的就是这个部分,翻页控制的代码根本没有任何限制。按楼主的代码,试想一下如果当前页为最后一页,再点击下一页会是什么后果。
应该修改为
IF pgno<>1 Then
response.write"<div align=center><a href=search.asp?pgno="
response.write CStr(pgno-1)
response.write">上一页</a>
Else
response.write"<div align=center>上一页
End IF
IF pgno<>pgct Then
Response.write"<a href=search.asp?pgno="
response.write CStr(pgno+1)
response.write">下一页</a>"
Else
Response.write "下一页"
End IF
Response.write"<a href=search.asp?pgno=1>第一页</a>"
response.write"<a href=search.asp?pgno="
response.write pgct
response.write"> 最后一页</a> 共"
response.write pgct
response.write"页 当前为第"
response.write pgno
这样就保证了到最后一页后不能再继续翻页了。作者: 平淡♀芳 时间: 2010-1-13 07:07
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn.asp" -->
<%
dim sql,pgno,pgsz,pgct
if request.querystring("page")="" then
page=1
end if
sql="select * from mytable where year="&Cint(request.QueryString("year") )
set rs=server.CreateObject("adodb.recordset")
mypagesize=2
rs.open sql,conn,1,1
rs.pagesize=mypagesize
mymaxpage=cint(rs.pagecount)
if request.querystring("page")>mymaxpage then
page=mymaxpage
end if
rs.absolutepage=page
if rs.eof and rs.bof then '如果没有相应记录
response.write "对不起,没有匹配的记录<br>"
response.end()
end if