将数据库中的数据分页显示

时间:2022-01-29 21:11:59
将数据库中的数据分页显示
    我现在的数据库中用10000多条纪录,我现在想分页显示,每页显示30条纪录。页面底部罗列出共有多少页,当前第几页,跳专至第几页,下一页等。考虑到由于记录多而引起的速度的问题,可否第一页的纪录是打库得到的,以后每链接一页打一次库,从而增加数度。请高手指教,在这里非常感谢,对您的敬仰如三江之水滔滔滔滔滔滔绝!!!!!

7 个解决方案

#1


搜索啊。网上多的很啊

#2


<% 
 if rs.RecordCount > 0 then
 rs.pagesize=10
 page=cint(request("page"))
 if page<1 then page=1
  if page>rs.pagecount then page=rs.pagecount
%>
<table border="2" width="100%">
 <%showonepage rs,page%>
 </table>
 <%if page<>1 then
   Response.Write"<a href =1.asp?page=1>第一页</a>&nbsp;"
   Response.Write"<a href =1.asp?page="&(page-1)&">上一页</a>&nbsp;"
 end if 
if page<>rs.PageCount then
   Response.Write"<a href =1.asp?page="&(page+1)&"> 下一页 </a>&nbsp;"
   Response.Write"<a href =1.asp?page="&rs.PageCount&"> 末页</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
 end if
 %>

#3


我刚用过的:
TEST.asp
--------------------------------------------------- 
 <table width="100%" border="0" cellspacing="1" cellpadding="2">
              <tr> <td height="59" valign="top">

<%
set rs=server.createobject("adodb.recordset")
sqltext="Select * From XXX" 
rs.open sqltext,conn,1,1

dim MaxPerPage
MaxPerPage=4

'假如没有数据时
If rs.eof and rs.bof then 
   call showpages
   response.write "<p align='center'><font color='#ff0000'>暂且没有特价产品</font></p>"
   response.end
End if

'取得页数,并判断用户输入的是否数字类型的数据,如不是将以第一页显示
dim text,checkpage
text="0123456789"
 Rs.PageSize=MaxPerPage
for i=1 to len(request("page"))
   checkpage=instr(1,text,mid(request("page"),i,1))
   if checkpage=0 then
      exit for 
   end if
next

If checkpage<>0 then
      If NOT IsEmpty(request("page")) Then
        CurrentPage=Cint(request("page"))
        If CurrentPage < 1 Then CurrentPage = 1
        If CurrentPage > Rs.PageCount Then CurrentPage = Rs.PageCount
      Else
        CurrentPage= 1
      End If
      If not Rs.eof Then Rs.AbsolutePage = CurrentPage end if
Else
   CurrentPage=1
End if

call showpages
call list

If Rs.recordcount > MaxPerPage then
   call showpages
end if

'显示帖子的子程序
Sub list()%>
        <table width="460" border="0" align="center" cellpadding="0" cellspacing="1" bordercolorlight="#FF9900" bordercolordark="#FFFFFF" bgcolor="#76C1F2">
          <tr>
            <td bgcolor="ffffff"> 
              <table width="450" border="0" align="center" cellpadding="0" cellspacing="0" bordercolorlight="#FF9900" bordercolordark="#FFFFFF">
          <%
if not rs.eof then
  i=0
  do while not rs.eof %>
            <td width="217" align="center" valign="top"> 
            显示数据库的记录 </td>

   <%
   i=i+1
   if i >= MaxPerpage  then exit do
   response.write "</tr> <tr bgcolor=ffffff>"
   rs.movenext
   loop
end if
%>
</table>

<%
End sub
rs.close
conn.close
'显示翻页的子程序
sub showpages()%>
        <table width="458" border="0" align="center" cellPadding="0" cellSpacing="0" bgColor="#76C1F2" >
                <tr><td width="449">
<%
response.write "<form method=Post action='TEST.asp'>"
%> 
              <table width="100%" height="30" border="0" align="center" cellPadding="0" cellSpacing="0">
                <tr>
    <td>   
<%
   Response.write "<font color='#ffffff'><b>>>分页-</b></font>"   
   If currentpage > 1 Then
      response.write "<a href='TEST.asp?&page="+cstr(1)+"'><font color='#ffffff'><b>首页</b></font></a><font color='#ffffff'><b>-</b></font>"  
      Response.write "<a href='TEST.asp?page="+Cstr(currentpage-1)+"'><font color='#ffffff'><b>前页</b></font></a><font color='#ffffff'><b>-</b></font>"
   Else
      Response.write "<font color='#ffffff'><b>首页-</b></font>"
      Response.write "<font color='#ffffff'><b>前页-</b></font>"      
   End if
   
   If currentpage < Rs.PageCount Then
      Response.write "<a href='TEST.asp?page="+Cstr(currentPage+1)+"'><font color='#ffffff'><b>后页</b></font></a><font color='#ffffff'><b>-</b></font>"
      Response.write "<a href='TEST.asp?page="+Cstr(Rs.PageCount)+"'><font color='#ffffff'><b>尾页</b></font></a>&nbsp;&nbsp;"
   Else
      Response.write "<font color='#ffffff'><b>后页-</b></font>"

      Response.write "<font color='#ffffff'><b>尾页</b></font>&nbsp;&nbsp;"       
   End if
   Response.write "<font color='#ffffff'><b>页次:</b></font>" & "<b><font color=#FF0000>" & Cstr(CurrentPage) &  "</font></b>" & "<font color='#ffffff'><b>/" & Cstr(rs.pagecount) & "</b></font>&nbsp;"
   Response.write "<b><font color=#ff0000>" & Cstr(MaxPerPage) & "</font></b>" & "<font color='#ffffff'><b>种产品/页&nbsp" & "共</b></font>" & "<b><font color=#FF0000>" & Cstr(Rs.RecordCount) & "</font></b>" & "<font color='#ffffff'><b>种产品</b></font>&nbsp;&nbsp;"

response.write "</td><td align='right'>"
 
%>    
    </td>  
   </tr>
  </table>
</td></tr>
</table>
</form>
              </td>
          </tr></table> 
  <%end sub%>

  -----------------------------------------------------------

#4


楼主的意思不是一次选出所有的记录,而是当用户提交请求的时候再去搜索数据库,即是数据库内逻辑分页。

#5


是的。这样在时间上会快一些么???!
由实现的方法么

#6


<% sql="Select * from TABLE order by int(id)"
   Set rs=Server.CreateObject("Adodb.Recordset")
   rs.open sql,conn,1,1
   If Not rs.eof then
      rs.pagesize=30
      dim page
      page = 1
      If len(request.querystring("page"))>0 then
         page = request.querystring("page")
      end if
      rs.Absolutepage=page
      dim i
      i=1
      Do while not rs.eof and i<=rs.pagesize %>

      显示数据

<%    rs.MoveNext
      i=i+1
      Loop 
      else %>
 
      没有数据

 <% end if %>
  <tr>
    <td width="" colspan="" height="" align="center">
     <% If rs.pagecount>1 then
           dim n
           for n = 1 to rs.pagecount %>
           <a href="list.asp?page=<%=n%>"><%=n%></a>&nbsp; 
     <%    next
           end if %>
    </td>
  </tr>

#7


你可以先定义一个变量page,和变量absolution设定每页显示纪录数
当第一次显示时(即page=""),显示第一页的内容
当page<>""或非法字符时,计算出开始显示的第一条纪录是哪一条,然后用recordset的move方法将指针指到在记录上,然后循环显示一页

底下是个分页的东西,里面有
页面底部罗列出共有多少页,当前第几页,跳专至第几页,下一页等

#1


搜索啊。网上多的很啊

#2


<% 
 if rs.RecordCount > 0 then
 rs.pagesize=10
 page=cint(request("page"))
 if page<1 then page=1
  if page>rs.pagecount then page=rs.pagecount
%>
<table border="2" width="100%">
 <%showonepage rs,page%>
 </table>
 <%if page<>1 then
   Response.Write"<a href =1.asp?page=1>第一页</a>&nbsp;"
   Response.Write"<a href =1.asp?page="&(page-1)&">上一页</a>&nbsp;"
 end if 
if page<>rs.PageCount then
   Response.Write"<a href =1.asp?page="&(page+1)&"> 下一页 </a>&nbsp;"
   Response.Write"<a href =1.asp?page="&rs.PageCount&"> 末页</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
 end if
 %>

#3


我刚用过的:
TEST.asp
--------------------------------------------------- 
 <table width="100%" border="0" cellspacing="1" cellpadding="2">
              <tr> <td height="59" valign="top">

<%
set rs=server.createobject("adodb.recordset")
sqltext="Select * From XXX" 
rs.open sqltext,conn,1,1

dim MaxPerPage
MaxPerPage=4

'假如没有数据时
If rs.eof and rs.bof then 
   call showpages
   response.write "<p align='center'><font color='#ff0000'>暂且没有特价产品</font></p>"
   response.end
End if

'取得页数,并判断用户输入的是否数字类型的数据,如不是将以第一页显示
dim text,checkpage
text="0123456789"
 Rs.PageSize=MaxPerPage
for i=1 to len(request("page"))
   checkpage=instr(1,text,mid(request("page"),i,1))
   if checkpage=0 then
      exit for 
   end if
next

If checkpage<>0 then
      If NOT IsEmpty(request("page")) Then
        CurrentPage=Cint(request("page"))
        If CurrentPage < 1 Then CurrentPage = 1
        If CurrentPage > Rs.PageCount Then CurrentPage = Rs.PageCount
      Else
        CurrentPage= 1
      End If
      If not Rs.eof Then Rs.AbsolutePage = CurrentPage end if
Else
   CurrentPage=1
End if

call showpages
call list

If Rs.recordcount > MaxPerPage then
   call showpages
end if

'显示帖子的子程序
Sub list()%>
        <table width="460" border="0" align="center" cellpadding="0" cellspacing="1" bordercolorlight="#FF9900" bordercolordark="#FFFFFF" bgcolor="#76C1F2">
          <tr>
            <td bgcolor="ffffff"> 
              <table width="450" border="0" align="center" cellpadding="0" cellspacing="0" bordercolorlight="#FF9900" bordercolordark="#FFFFFF">
          <%
if not rs.eof then
  i=0
  do while not rs.eof %>
            <td width="217" align="center" valign="top"> 
            显示数据库的记录 </td>

   <%
   i=i+1
   if i >= MaxPerpage  then exit do
   response.write "</tr> <tr bgcolor=ffffff>"
   rs.movenext
   loop
end if
%>
</table>

<%
End sub
rs.close
conn.close
'显示翻页的子程序
sub showpages()%>
        <table width="458" border="0" align="center" cellPadding="0" cellSpacing="0" bgColor="#76C1F2" >
                <tr><td width="449">
<%
response.write "<form method=Post action='TEST.asp'>"
%> 
              <table width="100%" height="30" border="0" align="center" cellPadding="0" cellSpacing="0">
                <tr>
    <td>   
<%
   Response.write "<font color='#ffffff'><b>>>分页-</b></font>"   
   If currentpage > 1 Then
      response.write "<a href='TEST.asp?&page="+cstr(1)+"'><font color='#ffffff'><b>首页</b></font></a><font color='#ffffff'><b>-</b></font>"  
      Response.write "<a href='TEST.asp?page="+Cstr(currentpage-1)+"'><font color='#ffffff'><b>前页</b></font></a><font color='#ffffff'><b>-</b></font>"
   Else
      Response.write "<font color='#ffffff'><b>首页-</b></font>"
      Response.write "<font color='#ffffff'><b>前页-</b></font>"      
   End if
   
   If currentpage < Rs.PageCount Then
      Response.write "<a href='TEST.asp?page="+Cstr(currentPage+1)+"'><font color='#ffffff'><b>后页</b></font></a><font color='#ffffff'><b>-</b></font>"
      Response.write "<a href='TEST.asp?page="+Cstr(Rs.PageCount)+"'><font color='#ffffff'><b>尾页</b></font></a>&nbsp;&nbsp;"
   Else
      Response.write "<font color='#ffffff'><b>后页-</b></font>"

      Response.write "<font color='#ffffff'><b>尾页</b></font>&nbsp;&nbsp;"       
   End if
   Response.write "<font color='#ffffff'><b>页次:</b></font>" & "<b><font color=#FF0000>" & Cstr(CurrentPage) &  "</font></b>" & "<font color='#ffffff'><b>/" & Cstr(rs.pagecount) & "</b></font>&nbsp;"
   Response.write "<b><font color=#ff0000>" & Cstr(MaxPerPage) & "</font></b>" & "<font color='#ffffff'><b>种产品/页&nbsp" & "共</b></font>" & "<b><font color=#FF0000>" & Cstr(Rs.RecordCount) & "</font></b>" & "<font color='#ffffff'><b>种产品</b></font>&nbsp;&nbsp;"

response.write "</td><td align='right'>"
 
%>    
    </td>  
   </tr>
  </table>
</td></tr>
</table>
</form>
              </td>
          </tr></table> 
  <%end sub%>

  -----------------------------------------------------------

#4


楼主的意思不是一次选出所有的记录,而是当用户提交请求的时候再去搜索数据库,即是数据库内逻辑分页。

#5


是的。这样在时间上会快一些么???!
由实现的方法么

#6


<% sql="Select * from TABLE order by int(id)"
   Set rs=Server.CreateObject("Adodb.Recordset")
   rs.open sql,conn,1,1
   If Not rs.eof then
      rs.pagesize=30
      dim page
      page = 1
      If len(request.querystring("page"))>0 then
         page = request.querystring("page")
      end if
      rs.Absolutepage=page
      dim i
      i=1
      Do while not rs.eof and i<=rs.pagesize %>

      显示数据

<%    rs.MoveNext
      i=i+1
      Loop 
      else %>
 
      没有数据

 <% end if %>
  <tr>
    <td width="" colspan="" height="" align="center">
     <% If rs.pagecount>1 then
           dim n
           for n = 1 to rs.pagecount %>
           <a href="list.asp?page=<%=n%>"><%=n%></a>&nbsp; 
     <%    next
           end if %>
    </td>
  </tr>

#7


你可以先定义一个变量page,和变量absolution设定每页显示纪录数
当第一次显示时(即page=""),显示第一页的内容
当page<>""或非法字符时,计算出开始显示的第一条纪录是哪一条,然后用recordset的move方法将指针指到在记录上,然后循环显示一页

底下是个分页的东西,里面有
页面底部罗列出共有多少页,当前第几页,跳专至第几页,下一页等