哪个高手能帮我改进一下这段代码吗,运行的结果不是我想要的...

dnnl529500 2008-04-30 10:51:55
RS是SQL查询回复的语句,RS3是查询主题贴的语句.
基本的代码如下,但是有点小问题..
就是RS的第5条记录不会显示出来..
有哪个高手帮忙改进一下吗?万分感谢



<%
If rs.recordcount > 0 Then
rs.pagesize = 5
Num = rs.recordcount
pageNum = rs.pagecount
page = Request.QueryString("page")
If page <> "" Then
page = Cint(page)
ElseIf page < 1 Then
page = 1
Else
page =1
End If
If page < 1 then
page =1
End If
If page*rs.pagesize >Num and Not ((page-1)*rs.pagesize <Num) Then
page = pagenum
End If
rs.absolutepage = page
LoopNum = rs.pagesize
strpage = cint(Request.QueryString("page"))
%>


<% For i = 1 to LoopNum
if strpage < 2 and i=1 then %>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名<%=rs3("tiname").value%></td>
<td width="521" >发表时间:<%=rs3("posttime").value%></td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2"> </td>
<td colspan="2" bgcolor="#92CAE2" ><%=rs3("TitleContent").value%><br></td>
</tr>
<% else
if rs.eof then exit for
%>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名<%=rs("postname").value%></td>
<td width="521" >发表时间:<%=rs("posttime").value%></td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2"> </td>
<td colspan="2" bgcolor="#92CAE2" ><%=rs("Content").value%><br></td>
</tr>
<%
rs.movenext
end if
Next %>
...全文
218 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
银狐被占用 2008-04-30
  • 打赏
  • 举报
回复
这样第一页显示6个结果,到第二页就还是5个结果。
银狐被占用 2008-04-30
  • 打赏
  • 举报
回复
哦,看完1楼的才明白楼主想要什么结果。
应该改为:

<%i=1
else
if rs.eof then exit for
%>
银狐被占用 2008-04-30
  • 打赏
  • 举报
回复
程序没发现问题,你看一下数据库中是否有5条记录。
erdong988 2008-04-30
  • 打赏
  • 举报
回复
你LoopNum的值是5,循环五次
第一次是主题贴,剩下的四次是回复贴
当然只显示四条回复了
出现这种情况 原因很明显

<% For i = 1 to LoopNum
if strpage < 2 and i=1 then %>

改为
<% For i = 0 to LoopNum
if strpage < 2 and i=0 then %>
试试
dnnl529500 2008-04-30
  • 打赏
  • 举报
回复
我还是决定重写数据库,重新定义查询语句来决定..谢谢各位的帮忙
  • 打赏
  • 举报
回复
<% 
If rs.recordcount > 0 Then
rs.pagesize = 5
Num = rs.recordcount
pageNum = rs.pagecount
page = Request.QueryString("page")
If page <> "" Then
page = Cint(page)
ElseIf page < 1 Then
page = 1
Else
page =1
End If
If page < 1 then
page =1
End If
If page*rs.pagesize >Num and Not ((page-1)*rs.pagesize <Num) Then
page = pagenum
End If
rs.absolutepage = page
LoopNum = rs.pagesize
%>


<% For i = 1 to LoopNum
if page=2 and i=1 then %>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名 <%=rs3("tiname").value%> </td>
<td width="521" >发表时间: <%=rs3("posttime").value%> </td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2">  </td>
<td colspan="2" bgcolor="#92CAE2" > <%=rs3("TitleContent").value%> <br> </td>
</tr>
<% end if
%>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名 <%=rs("postname").value%> </td>
<td width="521" >发表时间: <%=rs("posttime").value%> </td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2">  </td>
<td colspan="2" bgcolor="#92CAE2" > <%=rs("Content").value%> <br> </td>
</tr>
<%
rs.movenext
if rs.eof then exit for
Next %>
  • 打赏
  • 举报
回复
我11楼说得很清楚了,你只拿rs分页,不拿rs3分页
那么你只只需要一个if then语句就一切OK
<% For i = 1 to LoopNum
if page=1 and i=1 then %>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名 <%=rs3("tiname").value%> </td>
<td width="521" >发表时间: <%=rs3("posttime").value%> </td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2">  </td>
<td colspan="2" bgcolor="#92CAE2" > <%=rs3("TitleContent").value%> <br> </td>
</tr>
<% end if
%>
<tr bgcolor="#92CAE2">
<td width="102" bgcolor="#92CAE2">用户名 <%=rs("postname").value%> </td>
<td width="521" >发表时间: <%=rs("posttime").value%> </td>
</tr>
<tr>
<td width="102" bgcolor="#92CAE2">  </td>
<td colspan="2" bgcolor="#92CAE2" > <%=rs("Content").value%> <br> </td>
</tr>
<%
rs.movenext
if rs.eof then exit for
Next %>
这样即可,实际你只处理第一页,跟其他分页没什么区别
dnnl529500 2008-04-30
  • 打赏
  • 举报
回复
第一页6条我可以做出来,就是每一页都同样的条数,而且还不会丢失记录就不知从何处下手了...
  • 打赏
  • 举报
回复
也就是我11楼说的做法
  • 打赏
  • 举报
回复
总的思路
首先第一页4条,后面的是5条一页,最后一页是根据剩下多少条就多少条
所以你要做这些判断,不能是常规的分页,因为你不是每页的页书都一样,要不然你就得这样,
就是第一页6条,后面每一页5条最后一页是根据剩下多少条就多少条
仲夏之约 2008-04-30
  • 打赏
  • 举报
回复
page = 1
pagesize=4
page > 2
pagesize =5

这样的写法,第五条记录永远出不来,

楼主的想法是好的,想每页都显示5条记录,看起来美观。

但是第一页包含了主帖,只要把主贴的内容也放到跟贴的表里就可以了,主帖表里只要一个标题就OK了
  • 打赏
  • 举报
回复
你的剩余记录数应该不是这一段吧!
  • 打赏
  • 举报
回复
拿这个分页函数做分析吧
**************************************************
'函数名:shosql
'作 用:分页效果
'参 数:spage ----当前页
'参 数:spageno ----每页数量
'参 数:rscount ---数据总数
'**************************************************
sub showsql(spageno)
page=request("page")
if page="" or not isnumeric(page) then
page=1
else
page=clng(page)
end if
pageno=spageno
if page<1 then
page=1
end if

rscount=rscount

pagemax=rscount\pageno
if rscount mod pageno <>0 then
pagemax=pagemax+1
end if
if page>pagemax then
page=pagemax
end if
rsno=pageno*page-pageno
if page=pagemax then
loopno=rscount-rsno
else
loopno=pageno
end if
end sub

rsno=pageno*page-pageno
这个知道指的什么吗?

if page=pagemax then
loopno=rscount-rsno
else
loopno=pageno
end if
这个应该知道是什么吧,这个是当前页显示几条的,但是你要清楚,第一页显示的并不是5,而是4,也就是最后一页和第一页的都需要判断
call showsql(pageno)
rs.move(rsno)
这样调用这个函数,
dnnl529500 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 chinmo 的回复:]
移到哪?这个问题应该就是第一页没把最后一条(第5条)显示出来就满页了,但第二页没有继续显示第5条,知道问题出在哪,可是我改不了代码...改不对..


你要改的地方是剩余数的那一段
剩余数的那段不对
[/Quote]

就是不知怎样下手改这一段.....
  • 打赏
  • 举报
回复
移到哪?这个问题应该就是第一页没把最后一条(第5条)显示出来就满页了,但第二页没有继续显示第5条,知道问题出在哪,可是我改不了代码...改不对..


你要改的地方是剩余数的那一段
剩余数的那段不对
  • 打赏
  • 举报
回复
只是叫把Num = rs.recordcount
pageNum = rs.pagecount
移到我说的红色部分
dnnl529500 2008-04-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 chinmo 的回复:]
<%
If rs.recordcount > 0 Then
page =  Request.QueryString("page")
If page    <> ""  Then
page = Cint(page)
ElseIf page    < 1 Then
page = 1
Else
page =1
End If
If page    < 1 then
page =1
End If
if page=1 then
rs.pagesize = 4
else
rs.pagesize = 5
end if
Num = rs.recordcount
pageNum = rs.pagecount
If page*rs.pagesize >Num and Not ((page-1)*rs.pagesize    <Num) Then
page = pag…
[/Quote]

移到哪?这个问题应该就是第一页没把最后一条(第5条)显示出来就满页了,但第二页没有继续显示第5条,知道问题出在哪,可是我改不了代码...改不对..
  • 打赏
  • 举报
回复
<%
If rs.recordcount > 0 Then
page = Request.QueryString("page")
If page <> "" Then
page = Cint(page)
ElseIf page < 1 Then
page = 1
Else
page =1
End If
If page < 1 then
page =1
End If
if page=1 then
rs.pagesize = 4
else
rs.pagesize = 5
end if
Num = rs.recordcount
pageNum = rs.pagecount

If page*rs.pagesize >Num and Not ((page-1)*rs.pagesize <Num) Then
page = pagenum
End If
rs.absolutepage = page
LoopNum = rs.pagesize
%>
把那部分移到红色部分
  • 打赏
  • 举报
回复
那就是你分页代码的那段读取剩余数的出错了
  • 打赏
  • 举报
回复
那就要看你记录分页的那个,这段代码是没问题了
加载更多回复(14)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧