设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 102|回复: 9
打印 上一主题 下一主题

[求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-13 07:06:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我自己写的代码,是通过选择年份来查询成员.可无法查找出记录,只能显示上一页下一页那几个导航,求助高手帮忙!!
以下是主要代码
<%@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>
2#
发表于 2010-1-13 07:06:46 | 只看该作者
怎么没有人啊,
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-13 07:06:49 | 只看该作者
do while not rs.eof and rs.bof '如果有记录
改成do while not rs.eof and not rs.bof
试试
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-13 07:06:53 | 只看该作者
我上面写的错了
应该是do while not rs.eof
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-13 07:06:56 | 只看该作者
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
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-13 07:07:00 | 只看该作者
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
这样就保证了到最后一页后不能再继续翻页了。
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-13 07:07:04 | 只看该作者
<%@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

do while not rs.eof and mypage>0'如果有记录

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
mypage=mypage-1

loop
rs.close()
set rs=nothing
conn.close
set conn=nothing
response.write"<div align=center><a href=search.asp?page="
response.write page-1
response.write">上一页</a> <a href=search.asp?page="
response.write page+1
response.write">下一页</a> <a href=search.asp?page=1>第一页</a>"
response.write"<a href=search.asp?page="
response.write mymaxpage
response.write"> 最后一页</a> 共"
response.write mymaxpage
response.write"页 当前为第"
response.write page
%>页</td>
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-13 07:07:07 | 只看该作者
谢谢大家了,我还有个问题,我的数据库里年份的类型是整型,用
sql="select * from mytable where year="&Cint(request.QueryString("year") )
这句确找不出来数据,这是为什么?
回复 支持 反对

使用道具 举报

9#
发表于 2010-1-13 07:07:15 | 只看该作者
iyear=Cint(request.QueryString("year") )
sql="select * from mytable where year=#"&iyear&"# "
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 19:24 , Processed in 0.076091 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表