关于翻页的问题
<%@ LANGUAGE="VBScript" %><script language="VBScript" runat="server" ></script>
<html>
<head></head>
<body>
<center>
<%
Sub ShowHeader(tabletitle)
Response.Write("<p>【<b>" & tabletitle & "</b>】")
Response.Write("<table border='1' width='80%'>")
Response.Write("<tr align='left'>")
Response.Write("<th width='25%'>会员账号</th>")
Response.Write("<th width='25%'>球队名称</th>")
Response.Write("<th width='25%'>会员积分</th>")
Response.Write("<th width='25%'>会员头衔</th>")
Response.Write("</tr>")
End Sub
bh = Request("hyzh")
qm = Request("qmlm")
if bh <> "" then
' 注释:生成SQL查询语句
if qm <> "" then
mysql = "SELECT main.会员账号,main.会员积分,main.会员头衔,team.球队名称 " & _
" FROM main " & _
" INNER JOIN team ON main.球迷联盟= team.球队编号 " & _
" WHERE 会员账号 LIKE '%" & Request("hyzh") & "%'" & _
" AND 球迷联盟 = '" & Left(Request("qmlm"),3) & "'"
' 注释:连接数据库
Set objRS = Session("objRS")
objRS.Source = mysql
objRS.Open
' 注释:显示查询结果
' 注释:此处为分页查询
If objRS.RecordCount > 0 Then
If Request("ps") = "" Then
objRS.PageSize = 10
Else
objRS.PageSize = CInt(Request("ps"))
End If
If Request("pn") = "" Then
CurPage = 1
Else
CurPage = CInt(Request("pn"))
End if
objRS.AbsolutePage = CurPage
' 注释:显示分页信息
Response.Write("共有【" & objRS.RecordCount & "】条记录")
' 注释:制作分页导航
If objRS.PageCount > 1 Then
Response.Write(",分成【" & objRS.PageCount & "】页:")
For i = 1 to objRS.PageCount
If i = CurPage Then Response.Write("<b>")
%>
<a href="search2.asp?pn=<% =i %>">第<% =i %>页</a>>
<%
If i = CurPage Then Response.Write("</b>")
Next
End If
Call ShowHeader("会员信息")
Do While Not objRS.EOF
Response.Write("<tr>")
Response.Write("<td>" & objRS("会员账号") & "</td>")
Response.Write("<td>" & objRS("球队名称") & "</td>")
Response.Write("<td>" & objRS("会员积分") & "</td>")
Response.Write("<td>" & objRS("会员头衔") & "</td>")
Response.Write("</tr>")
objRS.MoveNext
Loop
End If
else
mysql = "SELECT main.会员账号,main.会员积分,main.会员头衔,team.球队名称 " & _
" FROM main " & _
" INNER JOIN team ON main.球迷联盟= team.球队编号 " & _
" WHERE 会员账号 LIKE '%" & Request("hyzh") & "%'"
' 注释:连接数据库
Set objRS = Session("objRS")
objRS.Source = mysql
objRS.Open
' 注释:显示查询结果
' 注释:此处为分页查询
If objRS.RecordCount > 0 Then
If Request("ps") = "" Then
objRS.PageSize = 10
Else
objRS.PageSize = CInt(Request("ps"))
End If
If Request("pn") = "" Then
CurPage = 1
Else
CurPage = CInt(Request("pn"))
End if
objRS.AbsolutePage = CurPage
' 注释:显示分页信息
Response.Write("共有【" & objRS.RecordCount & "】条记录")
' 注释:制作分页导航
If objRS.PageCount > 1 Then
Response.Write(",分成【" & objRS.PageCount & "】页:")
For i = 1 to objRS.PageCount
If i = CurPage Then Response.Write("<b>")
%>
<a href="search2.asp?pn=<% =i %>">第<% =i %>页</a>>
<%
If i = CurPage Then Response.Write("</b>")
Next
End If
Call ShowHeader("会员信息")
Do While Not objRS.EOF
Response.Write("<tr>")
Response.Write("<td>" & objRS("会员账号") & "</td>")
Response.Write("<td>" & objRS("球队名称") & "</td>")
Response.Write("<td>" & objRS("会员积分") & "</td>")
Response.Write("<td>" & objRS("会员头衔") & "</td>")
Response.Write("</tr>")
objRS.MoveNext
Loop
End If
end if
else
mysql = "SELECT main.会员账号,main.会员积分,main.会员头衔,team.球队名称 " & _
" FROM main " & _
" INNER JOIN team ON main.球迷联盟= team.球队编号 " & _
" WHERE 球迷联盟 = '" & Left(Request("qmlm"),3) & "'"
Set objRS = Session("objRS")
objRS.Source = mysql
objRS.Open
If objRS.RecordCount > 0 Then
[color=Red]If Request("ps") = "" Then
objRS.PageSize = 10
Else
objRS.PageSize = CInt(Request("ps"))
End If
If Request("pn") = "" Then
CurPage = 1
Else
CurPage = CInt(Request("pn"))
End if
objRS.AbsolutePage = CurPage
' 注释:显示分页信息
Response.Write("共有【" & objRS.RecordCount & "】条记录")
' 注释:制作分页导航
If objRS.PageCount > 1 Then
Response.Write(",分成【" & objRS.PageCount & "】页:")
For i = 1 to objRS.PageCount
If i = CurPage Then Response.Write("<b>")
%>
<a href="srerch2.asp?pn=<% =i %>">第<% =i %>页</a>>
<%
If i = CurPage Then Response.Write("</b>")
Next[/color] End If
Call ShowHeader("商品信息登记表")
For i = 1 To objRS.RecordCount
Response.Write("<tr>")
Response.Write("<td>" & objRS("会员账号") & "</td>")
Response.Write("<td>" & objRS("球队名称") & "</td>")
Response.Write("<td>" & objRS("会员积分") & "</td>")
Response.Write("<td>" & objRS("会员头衔") & "</td>")
Response.Write("</tr>")
objRS.MoveNext
Next
End If
end if
' 注释:关闭记录集
objRS.Close
Set objRS = Nothing
%>
</center>
</body>
</html>
显示第一页的时候还正常,要是翻到第二页的话就显示的是全部信息了~~~~
[attach]35600[/attach]
我把附件上传了,希望高手帮我看下~~~~~
少上传了一个文件 补上
[attach]35601[/attach]
[[it] 本帖最后由 xiaolaba3330 于 2008-6-19 23:09 编辑 [/it]]
将这句话改成下面的样子
<a href="srerch2.asp?pn=<% =i %>&qmlm=<%=Request("qmlm")%>&hyzh=<%=Request("hyzh")%>">第<% =i %>页</a>> 没有成功,不过还是谢谢你~~~~~ rs | 数据库表连接名
repeatnum | 每页显示记录总数
startbynum | 从多少开始循环显示
numlink | 显示数字链接导航数目
全例: call fPageCount(rs,50,1,10)
function fPageCount(rs,repeatnum,startbynum,numlink)
toF_="首页"
toP10_=" 上十"
toP1_=" 上一"
toN1_=" 下一"
toN10_=" 下十"
toL_="尾页"
if not rs.eof then
rrc_=rs.recordcount
end if
if (not rs.eof or not rs.bof) and rrc_>repeatnum then 记录总数大于每页总数才显示分页链接
rqq_=request.ServerVariables("QUERY_STRING") 获取 URL 查询串, 并筛选所需
pv_=request("pageview") 翻页查询字符
if rqq_="" then
url="?pageview="
elseif instr(rqq_,"pageview")<>0 then
url="?"&replace(rqq_,"pageview="&pv_,"")&"pageview=" 不要试图把 pageview= 放进 replace 里
else
url="?"&replace(rqq_,"&pageview="&pv_,"")&"&pageview=" 同上
end if
pageview=CInt(Request("pageview")) 读取 URL 页号
rs.PageSize=repeatnum 定义每页显示记录数
If pageview<=0 Then pageview=1 如果 pageview 小于或等于0, 返回值1
If pageview>rs.PageCount Then pageview=rs.PageCount 如果 pageview 大于分页总数, 返回分页末页值
rs.AbsolutePage=pageview 定义当前页码
cPageNo=rs.AbsolutePage
tpagecount=rs.pagecount
If cPageNo<1 Then cPageNo=1 如果页数小于 1, 默认为 1; 当前页, cPageNo = Current Page NO.
If tPageCount<1 Then tPageCount=1
If cPageNo>tPageCount Then cPageNo=tPageCount
Dim NaviLength
NaviLength=numlink 显示数字链接数
Dim StartPage,EndPage 定义当前页, 开始页, 结束页
StartPage=(cPageNo\NaviLength)*NaviLength+1 为开始页赋值
if pageview=1 then 判断是否首页, 如果是首页不添加链接,反之添加.
Response.Write "<font color=""#CCCCCC"">"
response.write toF_
response.write "</font> "
Else
Response.Write "<a href="""
response.write url
response.write "1#anchor"">"
response.write toF_
response.write "</a> "
End If
If (cPageNo Mod NaviLength)=0 Then StartPage=StartPage-NaviLength
EndPage=StartPage+NaviLength-1
If EndPage>tPageCount Then EndPage=tPageCount
If StartPage>1 Then 向后移动一分页, 十页为一分页, 并且以 1, 11, 21... 为每页的开始页数
Response.Write "<a href="""
response.write url
response.write (cPageNo-(cPageNo mod 10)-NaviLength+1)
response.write "#anchor"">"
response.write toP10_
response.write "</a> "
Else
Response.Write "<font color=""#CCCCCC"">"
response.write toP10_
response.write "</font> "
End If
If pageview <> 1 and pageview <>0 Then 后移一页
Response.Write "<a href="""
response.write url
response.write (pageview-1)
response.write "#anchor"">"
response.write toP1_
response.write "</a> "
Else
Response.Write "<font color=""#CCCCCC"">"
response.write toP1_
response.write "</font> "
End If
For startbynum=StartPage To EndPage
If startbynum=cPageNo Then
Response.Write "<b class=""gray"">"
response.write startbynum
response.write "</b> "
Else
Response.Write "<a href="""
response.write url
response.write startbynum
response.write "#anchor"">"
response.write startbynum
response.write "</a> "
End If
Next
If pageview <> rs.PageCount and pageview <>0 Then 前移一页
Response.Write " <a href="""
response.write url
response.write (pageview+1)
response.write "#anchor"">"
response.write toN1_
response.write "</a> "
Else
Response.Write "<font color=""#CCCCCC"">"
response.write toN1_
response.write "</font> "
End If
If EndPage<tpagecount Then 向前移动一分页, 十页为一分页, 并且以 1, 11, 21 为每页的开始页数
Response.Write " <a href="""
response.write url
response.write (cPageNo-(cPageNo mod 10)+NaviLength+1)
response.write "#anchor"">"
response.write toN10_
response.write "</a> "
Else
Response.Write " <font color=""#CCCCCC"">"
response.write toN10_
response.write "</font> "
End If
if rs.PageCount<>pageview then 判断是否尾页
Response.Write "<a href="""
response.write url
response.write tpagecount
response.write "#anchor"">"
response.write toL_
response.write "</a>"
Else
Response.Write "<font color=""#CCCCCC"">"
response.write toL_
response.write "</font>"
End If
response.write " 转到:<input TYPE=""text"" class= ""jumpinput"" onMouseMove=""this.focus();this.select();"" onkeypress=""ckKeyPress(this.value);"" ><br/>"
页面信息
response.write repeatnum
response.write "篇/页 "
response.write cPageNo
response.write "/"
response.write tPageCount
response.write "页 共 "
response.write rrc_
response.write "篇<script>function ckKeyPress(jumpto){if (window.event.keyCode==13) {window.location.href="""
response.write url
response.write """+jumpto+""#anchor""}}</script>"
elseif (not rs.eof or not rs.bof) and rrc_<=repeatnum then
response.write "<div class=font12px>共 "
response.write rrc_
response.write " 篇</div>"
end if
end function
<!--
应该很清楚啦!!
-->
<!--
利用统计文章字数,然后达到一定字数就截断输出,但是分页的内容就会在莫名其妙的地方截断,不是很友好。 很简单,在要截断的地方附近找下面的符号:
;’”?。!;".!
如果后面存在<p>或<br>就分页。主要是要研究文章的格式。
-->
<%
if Request.ServerVariables("Content_Length") > 0 then
content = Request.Form("textarea1")
PageLength = 1000 每页字数
CLength = Len(content)
PageCount = Int(Clength/PageLength) + 1 计算页数
dim PageArray
redim PageArray(PageCount)
Seperator = Array(chr(13),chr(10),"。","!","?",";",",","”","’") 分隔符
PageArray(0) = 0
Pos = 0
for j=0 to ubound(Seperator)
Pos = instr(PageArray(i)+900,content,Seperator(j)) PageArray(i)+900 附近位置是100字,1-999可调
while Pos > 0 and Pos < (i+1)*PageLength and Pos > i*PageLength
PageArray(i) = Pos
Pos = instr(Pos+PageLength,content,Seperator(j))
wend
if PageArray(i) > 0 then
Response.Write "0:i¦ "&PageArray(i)&"<br>"&j&":j"&Seperator(j)&"<br>"
j = j + ubound(Seperator) + 1
end if
next
for i=1 to PageCount-1
PageArray(i) = 0
Pos = 0
for j=0 to ubound(Seperator)
Pos = instr(PageArray(i-1)+950,content,Seperator(j))
while Pos > 0 and Pos < (i+1)*PageLength and Pos > i*PageLength
PageArray(i) = Pos
Pos = instr(Pos+PageLength,content,Seperator(j))
wend
if PageArray(i) > 0 then
Response.Write i&":i¦ "&PageArray(i)&"<br>"&j&":j"&Seperator(j)&"<br>"
j = j + ubound(Seperator) + 1
end if
next
next
output = mid(content,1,PageArray(0))
output = replace(output,chr(13),"<br>")
Response.Write "<br><br>第1段<br>"
Response.Write output
for i=1 to PageCount-2
output = mid(content,PageArray(i-1)+1,PageArray(i)-PageArray(i-1))
output = replace(output,chr(13),"<br>")
Response.Write "<br><br>第"&i+1&"段<br>"
Response.Write output
next
最后一段的输出就没写了
else
%>
<FORM action="" method=POST id=form1 name=form1>
<TEXTAREA rows=70 cols=120 id=textarea1 name=textarea1>
</TEXTAREA>
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</FORM>
<%end if%>
<!--上一篇 下一篇 的链接-->
<%
sql="select top 1 标题,id from 文章 where id<"&本文章ID&" order by id desc"
set rs=conn.execute(sql)
if rs.eof then
response.write "上一篇文章:没有了"
else
response.write "上一篇文章: <a href=显示页.asp?id="&rs("id")">"&rs("标题")&"</a>"
end if
sql="select top 1 标题,id from 文章 where id>"&本文章ID&" order by id asc"
set rs=conn.execute(sql)
if rs.eof then
response.write "下一篇文章:没有了"
else
response.write "下一篇文章:<a href=显示页.asp?id="&rs("id")">"&rs("标题")&"</a>"
end if
%>
<!--
文章内容分页
解决文章内容自动分页,不需要在后台插入标志什么的 ... ...
已经在单位的业务产品中使用了,估计能给用户不少方便吧,至少录入的内容可以增加一些了-->
Function c2u(myText)
Dim i
c2u = ""
For i = 1 to Len(myText)
c2u = c2u & "&#x" & Hex(AscW(Mid(myText, i, 1))) & ";"
Next
End Function
Function cutStr(str,strlen)
去掉所有HTML标记
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="<(.[^>]*)>"
str=re.Replace(str,"")
set re=Nothing
Dim l,t,c,i
l=Len(str)
t=0
For i=1 to l
c=Abs(Asc(Mid(str,i,1)))
If c>255 Then
t=t+2
Else
t=t+1
End If
If t>=strlen Then
cutStr=left(str,i)&"..."
Exit For
Else
cutStr=str
End If
Next
cutStr=Replace(cutStr,chr(10),"")
cutStr=Replace(cutStr,chr(13),"")
End Function
Function converttowide(str)
Dim strlen
Dim position
Dim convertstr
if isnull(str) then
converttowide=str
else
position=1
strlen=Len(str)
For i=1 To strlen
convertstr=convertstr+"&#x"+Hex(AscW(Mid(str,position,1)))+";"
position=position+1
Next
converttowide=convertstr
end if
End Function
dim topicx,usernamex,addtimex,logtextx,ispassword
获取ID号
articleid=request("articleid")
写执行语句
strSQL = "select * from article where articleid="&articleid&""
接上面函数
logtextx=cutStr(rs("content"),5000)
开始分页
dim page,PageLength,CLength,PageCount,wen,a
if Request("Page")<>"" then Page = CLng(Request("Page"))
PageLength = 80
CLength = Len(logtextx)
PageCount = Int(Clength/PageLength) + 1
if Page < 1 or IsNull(Page) Then Page = 1
if Page > PageCount Then Page = PageCount
if page=1 then
a=1
elseif page>1 then
a=(Page-1)*PageLength
end if
wen=Mid(logtextx,a,PageLength)
判断
if page="" or page=1 then
开始显示内容
Response.write (c2u("内容:"))
end if
Response.write (converttowide(wen))
Response.write "<br/>"
Response.write (converttowide("本文字数:")) & CLength &"<br/>"
Response.write (c2u("本文被分为")) & PageCount & (converttowide("页"))&" "&c2u("当前为"&Page&"页")&"<br/>"
if PageCount >1 and page <> 1 then
Response.write "<a href="/"showarticle.asp?articleid="&articleid&"&Page=1"">1</a> "
end if
dim j
For j=Page+1 To Page+10
if j <= PageCount-1 then
Response.write "<a href="/"showarticle.asp?articleid="&articleid&"&Page="&j&""">"&j&"</a> "
end if
next
if PageCount >1 and Page <> PageCount then
Response.write "<a href="/"showarticle.asp?articleid="&articleid&"&Page="&PageCount&""">"&PageCount&"</a><br/>"
End if
结束
以上代码在WIN2000+IIS5、WIN2003+IIS6 上执行通过
搞个我收藏的你自己改改吧 <table width="540" align="center" bgcolor="#FBF7F8">
<tr><td height="100">
<%
Const MaxPerPage=5
dim totalPut
dim CurrentPage
dim TotalPages
dim j
dim sql
if Not isempty(request("page")) then
currentPage=Cint(request("page"))
else
currentPage=1
end if
set rs=server.CreateObject("adodb.recordset")
sql="select * from gbook order by id desc"
rs.open sql,conn,1,1
if err.number<>0 then
Response.write "数据库中还没有数据!"
Response.end
end if
if rs.eof And rs.bof then
Response.write "数据库中还没有数据!"
Response.end
else
totalPut=rs.recordcount
if currentpage<1 then
currentpage=1
end if
if (currentpage-1)*MaxPerPage>totalput then
if (totalPut mod MaxPerPage)=0 then
currentpage= totalPut \ MaxPerPage
else
currentpage= totalPut \ MaxPerPage + 1
end if
end if
if currentPage=1 then
else
if (currentPage-1)*MaxPerPage<totalPut then
rs.move (currentPage-1)*MaxPerPage
dim bookmark
bookmark=rs.bookmark
else
currentPage=1
end if
end if
end if
dim i
i=0%>
<%
do while not rs.eof%>
<table width="518" align="center" cellpadding="0" cellspacing="0" bgcolor="#FBF7F8">
<tr>
<td height="28" colspan="3" align="left" class="zi12">姓名为:<%=rs("lxr")%>在<%=rs("sj")%>留言</td>
</tr>
<tr>
<td width="84" height="28" align="right" class="zi12"><table width="100%" cellspacing="0" cellpadding="0">
<tr>
<td colspan="2" align="right" valign="middle" class="zi14">留言内容:</td>
</tr>
</table></td>
<td width="432" colspan="2" align="left" class="zi12" ><textarea name="sugg" cols="50" rows="5" id="sugg" ><%=rs("yj")%></textarea></td>
</tr>
<tr>
<td colspan="3">
</table>
<%i=i+1
if i>=MaxPerPage then Exit Do
rs.movenext
loop
rs.close
set rs=nothing%>
<tr valign="middle" bgcolor="#FFFFFF" align="right">
<td colspan="3" height="22">
<% Dim n
If totalPut Mod maxperpage=0 Then
n= totalPut \ maxperpage
Else
n= totalPut \ maxperpage+1
End If
Response.Write "<form method=Post action=?selectm="&selectm&"&selectkey="&selectkey&" >"
Response.Write "<p align='center' class='contents'> "
If CurrentPage<2 Then
Response.Write "<font class='contents'>首页 上一页</font> "
Else
Response.Write "<a href=?page=1&selectm="&selectm&"&selectkey="&selectkey&" class='contents'>首页</a> "
Response.Write "<a href=?page="&CurrentPage-1&"&selectm="&selectm&"&selectkey="&selectkey&" class='contents'>上一页</a> "
End If
If n-currentpage<1 Then
Response.Write "<font class='contents'>下一页 尾页</font>"
Else
Response.Write "<a href=?page="&(CurrentPage+1)&"&selectm="&selectm&"&selectkey="&selectkey&" class='contents'>"
Response.Write "下一页</a> <a href=?page="&n&"&selectm="&selectm&"&selectkey="&selectkey&" class='contents'>尾页</a>"
End If
Response.Write "<font class='contents'> 页次:</font><font class='contents'>"&CurrentPage&"</font><font class='contents'>/"&n&"页</font> "
Response.Write "<font class='contents'> 共有"&totalPut&"条信息 "
Response.Write "<font class='contents'>转到:</font><input type='text' name='page' size=2 maxlength=10 class=smallInput value="¤tpage&">"
Response.Write " <input type='submit' class='contents' value='GO' name='cndok' ></form>" %>
</td>
</tr>
</table>
这是我网页上用的分页代码,不知道你看不看的懂
这个肯定能用,刚拷下来的 我上次做分页的时候也是出现你这种性况,但我没找出来是那错了,我换了代码
呵呵,就行了[tk21]
页:
[1]
