| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:[求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等
只看楼主 加入收藏
beiouhaidao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-10-25
收藏
 问题点数:0 回复次数:9 
[求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等

我自己写的代码,是通过选择年份来查询成员.可无法查找出记录,只能显示上一页下一页那几个导航,求助高手帮忙!!

以下是主要代码

<%@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>

搜索更多相关主题的帖子: 网页 
2005-10-28 19:12
beiouhaidao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-10-25
收藏
得分:0 
怎么没有人啊,
2005-10-28 19:28
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 

do while not rs.eof and rs.bof '如果有记录

改成do while not rs.eof and not rs.bof

试试


2005-10-28 20:59
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 

我上面写的错了

应该是do while not rs.eof


2005-10-28 21:01
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

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

2005-10-28 21:21
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 

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
这样就保证了到最后一页后不能再继续翻页了。

2005-10-28 21:32
jnzsk
Rank: 1
等 级:新手上路
威 望:1
帖 子:403
专家分:0
注 册:2004-11-13
收藏
得分:0 
<%@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>


2005-10-29 16:03
beiouhaidao
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-10-25
收藏
得分:0 
谢谢大家了,我还有个问题,我的数据库里年份的类型是整型,用
sql="select * from mytable where year="&Cint(request.QueryString("year") )
这句确找不出来数据,这是为什么?
2005-10-29 19:45
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
request.QueryString("year")这个值有没有接收到?

可以在网页上外加一句Response.write "request.QueryString(year)="&request.QueryString("year")测试一下这个值传过来没有?
2005-10-29 21:05
dreame
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:521
专家分:0
注 册:2005-10-23
收藏
得分:0 
iyear=Cint(request.QueryString("year") )
sql="select * from mytable where year=#"&iyear&"# "

[此贴子已经被作者于2005-10-29 22:50:52编辑过]


有时候真的想放弃寂寞的等待,但她是那么的可爱!I love u forever!
2005-10-29 22:47
快速回复:[求助]我是初学者,做一个网页,找不出来错误原因了,高手帮忙~~在线等
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035209 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved