请教关于查询和分页的问题
<%
if request("keyword") = empty then '判断是否为空
Response.Redirect "dtxx_zh.asp"
else
dim word, wc
wc = "%"
word = trim(Request.Form("keyword"))
sqlstr = "select * from sheet1 where "
if len(word) > 0 then
sqlstr = sqlstr & " title like '" & wc & word & wc & "'"
end if
sqlstr = sqlstr & " order by number DESC"
end if
Set Example = New paginate '新建一个对像实例,Example可以为任意非关
键字名称
Example.strconn = MM_rec1_STRING '数据库连接语句
Example.strsql = sqlstr
Example.persize = 20 '分页大小设定
Example.targets = "query_result.asp" '目标文件,我这里设定为相对路径
Example.connect '打开数据库连接
%>
第一页显示是正常的,但是按下一页的时候就直接跳回“dtxx_zh.asp"页面,因此我估计
是 request("keyword") = empty then
Response.Redirect "dtxx_zh.asp"
这里的问题,那么怎样保存这个"keyword"值而使它在下一页开始的时候不为空?
谢谢帮忙,如有表达的不是很清楚的地方,请指出
问题点数:50、回复次数:9Top
1 楼qiangtian(tq)回复于 2005-06-03 08:59:21 得分 5
加一个隐藏域,input type=hiddenTop
2 楼poolnet()回复于 2005-06-03 09:02:51 得分 15
估计没有传递过去
word = trim(Request.Form("keyword")) -->>word = trim(Request("keyword"))
Example.targets = "query_result.asp?keyword=" & server.urlencode(word)Top
3 楼everywhen(那天,我醉了!)回复于 2005-06-03 09:03:46 得分 5
在你的“下一页”链接上传递页号的参数Top
4 楼dama2003(以后要开始加班了………………)回复于 2005-06-03 09:17:05 得分 0
在你的“下一页”链接上传递页号的参数
Top
5 楼jekexys2004(浪傲)回复于 2005-06-03 09:24:29 得分 10
楼主的分析完全正确,的确是当你点下一页是request("keyword")等于空,我是这样解决的。
keyword=trim(request("keyword"))
if keyword<>"" then
response.cookies("keyword")=keyword
end if
word = request.cookies("keyword")Top
6 楼poolnet()回复于 2005-06-03 09:32:10 得分 0
无语Top
7 楼leo963258(我劝天公重抖擞,不拘一格降人才)回复于 2005-06-03 09:32:48 得分 5
下页的时候。把keyword的值带上来
dtxx_zh.asp?keyword=xxxx&page=2
Top
8 楼ruralboy(乡下男孩)回复于 2005-06-03 09:54:22 得分 0
感谢各位高手回答
我按照 poolnet() 的方法试了一下,可以,jekexys2004的方法也可以
但是新的问题出现了:翻到下一页的时候记录全部为空!
是不是我用的分页代码有问题?请大家帮忙看一下:
<!--#include file="paginate.asp"-->
paginate.asp代码:
<%
Class paginate
Public strconn '数据库连接字段
Public persize '每分页大小数
Public strsql 'sql语句
Public targets '目标地址
Dim pagenow '现在的页数
Dim pagetotal '总页数
Dim objConn
Dim objRs
Dim moveno
Private Sub Class_Initialize ' 设置类初始化事件。
If Request("page") = Empty Then
pagenow = 0
Else
pagenow = cint(request("page")) - 1
END If
End Sub
Private Sub Class_Terminate ' 设置关闭事件。
End Sub
Public Sub connect '打开数据库连接
Set objConn = Server.CreateObject("ADODB.Connection")
Set objRs = Server.CreateObject("ADODB.RecordSet")
objConn.Open strConn
objRs.open strsql,objConn, 1, 1
pagetotal = (objRs.RecordCount \ persize) + 1 '总页数
moveno = pagenow * persize '看看传过来的分页数,以确定从哪一条新闻开始读起
if objRs.RecordCount>moveno then
objRs.move moveno
end if
End Sub
Public Sub first
If pagecount = 1 Then '这是只有一页的情况
response.write "第一页"
Else
If pagenow = 0 Then '这是第一页的情况
response.write "第一页"
page1=false
Else
page1=true
End if
If pagenow = pagecount - 1 then '这是多页情况下的最后一页
response.write "<a href=""" & targets & "?page=1"">第一页</a>"
page2=false
Else
page2=true
End if
If page2 AND page1 then '这是多页情况下中间的页数
response.write "<a href=""" & targets & "?page=1"">第一页</a>"
End if
End If
End Sub
Public Sub last
If pagecount = 1 Then '这是只有一页的情况
response.write "最后页"
Else
If pagenow = 0 Then '这是第一页的情况
response.write "<a href=""" & targets & "?page=" & pagetotal & """>最后页</a>"
page1=false
Else
page1=true
End if
If pagenow = pagecount - 1 then '这是多页情况下的最后一页
response.write "最后页"
page2=false
Else
page2=true
End if
If page2 AND page1 then '这是多页情况下中间的页数
response.write "<a href=""" & targets & "?page=" & pagetotal & """>最后页</a>"
End if
End If
End Sub
Public Sub nextd
If pagecount = 1 Then '这是只有一页的情况
response.write "下一页"
Else
If pagenow = 0 Then '这是第一页的情况
response.write "<a href=""" & targets & "?page=" & pagenow+2 & """>下一页</a>"
page1=false
Else
page1=true
End if
If pagenow = pagecount - 1 then '这是多页情况下的最后一页
response.write "下一页"
page2=false
Else
page2=true
End if
If page2 AND page1 then '这是多页情况下中间的页数
response.write "<a href=""" & targets & "?page=" & pagenow+2 & """>下一页</a>"
End if
End If
End Sub
Public Sub pre
If pagecount = 1 Then '这是只有一页的情况
response.write "上一页"
Else
If pagenow = 0 Then '这是第一页的情况
response.write "上一页"
page1=false
Else
page1=true
End if
If pagenow = pagecount - 1 then '这是多页情况下的最后一页
response.write "<a href=""" & targets & "?page=" & pagenow & """>上一页</a>"
page2=false
Else
page2=true
End if
If page2 AND page1 then '这是多页情况下中间的页数
response.write "<a href=""" & targets & "?page=" & pagenow & """>上一页</a>"
End if
End If
End Sub
Public Sub rs(content) '读数据库内容
Response.Write objRs(content)
End Sub
Public Sub total '总页数
Response.Write pagetotal
End Sub
Public Sub nowpage '现在的页数
Response.Write pagenow + 1
End Sub
Public Sub gonext '指针后移
objRs.MoveNext
End Sub
Public Sub goprev '指针前移
objRs.MovePrevious
End Sub
Public Function iseof '判断是否表尾
iseof = objRs.Eof
End Function
Public Function isbof '判断是否表头
isbof = objRs.Bof
End Function
Public Sub Closed '关闭数据库连接
objRs.Close
objConn.Close
Set objRs = Nothing
Set objConn = Nothing
End Sub
End Class
%>Top
9 楼jolinkyo(楼主太有才了)回复于 2005-06-03 09:59:18 得分 10
用session()
if trim(request("keyword"))<>"" then
session("keywork")=trim(request("keyword"))
end if
在sql语句里就用session("keywork")来比较
注意在查询页要把session("keyword")清空
session("keywork")=""Top




