| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 940 人关注过本帖
标题:[求助]带查询的分页显示问题
只看楼主 加入收藏
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
 问题点数:0 回复次数:6 
[求助]带查询的分页显示问题
我的程序里面带有一个查询,如果不输入查询的话显示所有的记录,此时的分页是 正确的!但是如果在查询文本框里输入了查询条件的话,分页就不正常了,点”下一页”,出现的是的结果跟没有输入查询条件时一样,请高手指示!
搜索更多相关主题的帖子: 查询 条件 文本 指示 
2007-07-18 11:18
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
得分:0 

下面是我的代码:
<form name="form1" method="post" action="">
<div align="center">选择查询方式
<select name="sltkind" size="1">
<option value="all" selected>-----全部-----</option>
<option value="r_lb">类别</option>
<option value="r_id">编号</option>
<option value="r_jbbm">经办部门</option>
<option value="r_ycdd">用餐地点</option>
<option value="r_date">日期</option>
</select>
值 :
<input type="text" name="txtvalue">
<input type="submit" name="Submit" value="查询">
</div>
</form> </p></td>
</tr>
<tr><td valign="top"><%
dim sql,thepage,shownum,page,pagenum,addpage,alterpage,showpages,delpage
thepage="showReceiption.asp"
shownum=1
addpage="add_receiption.asp"
alterpage="alter_receiption.asp"
delpage="del_receiption.asp"
dbstr="../"
showpages="showreceipt.asp"
typname=request.form("sltkind")
keyword=trim(request.form("txtvalue"))
if typname<>"all" and keyword<>"" then
sql="select r_id,r_lb as 类别,r_date as 日期,r_jdsy as 接待事由,r_jbbm as 经办部门,r_ycdd as 用餐地点,r_cf as 餐费一次,r_cf2 as 餐费二次,r_cf3 as 餐费三次,r_cf4 as 餐费四次,r_cf5 as 餐费五次 from receiption where "&typname&" like '%"&keyword&"%' order by r_id desc"
call ShowTable(sql,thepage,shownum,page,pagenum,"2-350-500-240-400",addpage,alterpage,showpages,delpage,"修改",0)
else
if typname<>"all" and keyword="" then
sql="select r_id,r_lb as 类别,r_date as 日期,r_jdsy as 接待事由,r_jbbm as 经办部门,r_ycdd as 用餐地点,r_cf as 餐费一次,r_cf2 as 餐费二次,r_cf3 as 餐费三次,r_cf4 as 餐费四次,r_cf5 as 餐费五次 from receiption order by r_id desc"
call ShowTable(sql,thepage,shownum,page,pagenum,"2-350-500-240-400",addpage,alterpage,showpages,delpage,"修改",0)
end if
end if

%>
显示分页的代码就是ShowTable函数
该函数如下:
<%


function ShowTable(sql,thepage,shownum,page,pagenum,checkbox,addpage,alterpage,showpages,delpage,dowhat,ifdel)
'参数说明:sql 数据库查询语句;thepage 用来分页显示数据的页面名称; shownum 每页显示数据条数
' page 当前显示的页码 pagenum 返回总页数 alterpage 修改页面(可含删除) delpage 删除页面
' checkbox 是否需要复选框 0 为开 1 为关闭 2-width-height-top-left为弹出窗口加宽、高、上边距、左边距
'ifdel 是否需要修改、删除页面 0为开 1为关闭
sql=CStr(sql)
thepage=CStr(thepage)
shownum=Clng(shownum)
width=Clng(width)
startrow=CInt(startrow)
endrow=CInt(endrow)
dim widanheight
dim conn,rs
set conn=getconn()
set rs=getrs()

dim fieldnum '字段数
dim linkid '超链接传递的参数

if (Request("page")<>"") then
page = CLng(Request("page")) 'string型转化为long型
else
page = 0
end if
'------------------排序处理-------------------------------
if page=0 or session("thePage")<>thepage then
session("thePage")=thepage
session("tempsql")=""
'response.write(session("thePage"))
end if

dim ordernum
ordernum=InStrRev(sql,"order by")
fromnum=InStrRev(sql,"from")
if ordernum<>0 and fromnum<ordernum then
tempsql=CStr(left(sql,ordernum+8)&request("order"))
else
tempsql=CStr(sql&" order by "&request("order"))
end if
if request("order")<>"" then '如果存在order by则替换
if session("orderby")=0 then
session("orderby")=1
sql=CStr(tempsql&" desc")
else
session("orderby")=0
sql=CStr(tempsql)
end if
session("tempsql")=sql '记录查询语句
end if
if(session("tempsql")<>"") and session("thePage")=thepage then sql=CStr(session("tempsql"))
'response.write(sql)
'-----------------------------------------------------------
'response.write(sql&"<br/>")
'if rs.State = adStateOpen then rs.Close 'response.write("Open<br/>")'
'response.write conn.state
on error resume next '错误处理
rs.open sql,conn,1,1

if(rs.bof and rs.eof) then
widanheight=split(checkbox,"-")
response.write("<table id='printTable' width='100%' border='0' cellpadding='0' cellspacing='0'><tr>")
response.Write("<div align='center'><p><font color='blue' size='3'>对不起,查询结果为零!</p></div> </tr>")
response.write("</tr></table>")
response.write("<div align='bottom'><a href='javascript:ClickAdd("""&addpage&""","&widanheight(1)&","&widanheight(2)&","&widanheight(3)&","&widanheight(4)&")'>添加信息 </a></div>")


page=-1

else
recordnum=rs.recordcount '记录数
if(shownum>=rs.recordcount) then shownum=rs.recordcount
rs.pagesize=shownum '设置每页显示数目
pagenum=rs.pagecount '获取页面数目
fieldnum=rs.fields.count '获取字段数
redim fieldname(fieldnum) '重新定义表字段数组
redim tablecontent(shownum,fieldnum) '重新定义表内容数组

'page = CLng(Request("page")) 'string型转化为long型
If page < 1 Then
page = 1
elseIf page > pagenum Then
page = pagenum
end if

rs.absolutepage=page '设置当前页面

'显示表头
response.write("<table id='printTable' width='800' border='0' cellpadding='0' cellspacing='0'><tr><td>")
response.write("<table id='ShowTable' class='turnTable' width='100%' align='center' border='1' cellpadding='2' cellspacing='0' style='border-collapse:collapse;' bordercolor='#AA9FFF'>")
'bordercolorlight='#52A2FF' bordercolordark='#CCFFFF' '细线表格属性
response.Write("<tr bgcolor='#52A2FF'>")
for j=1 to fieldnum '预留序号字段用以做查询条件
if j=fieldnum then
if(ifdel=0) then response.Write("<th align='center' width='70' title='操作'>操作</th>")
else
response.Write("<th align='center' title='点击"&rs(j).name&"排序'><a style='color:#FFFFFF; font-size:14px; font-weight:bold;' href='"&thepage&"?order="&j+1&"&page="&page&"'>"&rs(j).name&"</a></th>")
end if
next
response.Write("</tr>")

'rs.movefirst
'显示表的内容
for i=0 to shownum-1
if rs.eof then exit for
response.Write("<tr bgcolor='#CCFFFF';>")
for j=1 to fieldnum-1 '预留序号字段用以做查询条件
'输出处理
showtxt=rs(rs(j).name)
if(len(showtxt)>30) then showtxt=left(showtxt,30)
'if(len(rs(j).name)>5) then rs(j).name=left(rs(j).name,5)
response.Write("<td align='center'width='100' title='"&rs(rs(j).name)&"'>")
if(checkbox="0" and j=1 and showpages<>"") then '使用第一个字段作为链接字段
toshow="<div align='left'><input type='checkbox' name='checkbox' value='"&rs(rs(j-1).name)&"'/>&nbsp;"
toshow=toshow&"<a href='"&showpages&"?linkid="&rs(rs(j-1).name)&"&page="&page&"&action=alter'>"&showtxt&"<a></div>"
response.Write(toshow) '字段名称
elseif(j=1 and showpages<>"") then
if(left(checkbox,1)="2") then
widanheight=split(checkbox,"-")
toshow="<a href='javascript:ClickAlter("&""""&showpages&"?linkid="&rs(rs(j-1).name)&"&page="&page&"&action=alter"&""""&","&widanheight(1)&","&widanheight(2)&","&widanheight(3)&","&widanheight(4)&")'>"&showtxt&"<a>"
else
toshow="<a href='"&showpages&"?linkid="&rs(rs(j-1).name)&"&page="&page&"&action=alter' >"&showtxt&"<a>"
end if
response.Write(toshow) '字段名称
else
response.Write(showtxt) '字段名称
end if
response.Write("</td>")
next
'----------------添加修改、保存链接---------------------
if(ifdel=0) then
if(left(checkbox,1)="2") then
widanheight=split(checkbox,"-")
outstr="<td align='center'><a href='javascript:ClickAlter("&""""&alterpage&"?linkid="&rs(rs(0).name)&"&page="&page&"&action=alter"&""""&","&widanheight(1)&","&widanheight(2)&","&widanheight(3)&","&widanheight(4)&")'"
outstr=outstr&">"&dowhat&"<a>&nbsp;"
response.write(outstr)
else
response.write("<td align='center'><a href='"&alterpage&"?linkid="&rs(rs(0).name)&"&page="&page&"&action=alter'>"&dowhat&"<a>&nbsp;")
end if
redirecturl=delpage&"?linkid="&rs(rs(0).name)&"&page="&page&"&action=del"
response.write("<a href='javascript:ClickDel("""&redirecturl&""")' >删除<a></td>")
end if
'-------------------------------------------------------
response.Write("</tr>")
rs.movenext
next
rs.close
set rs=nothing
conn.close
set conn=nothing

'翻页链接

'response.Write("page:"&page)
response.Write("</table></td></tr></table><br/>")
response.write("<div align='center' class='turnTable'>")
response.write("<a href='javascript:ClickAdd("""&addpage&""","&widanheight(1)&","&widanheight(2)&","&widanheight(3)&","&widanheight(4)&")' >添加信息 </a>")
response.Write("共"&recordnum&"条记录 ")
if(checkbox="0") then response.Write("全选<input type='checkbox' name='checkSelectAll' value='checkSelectAll' onclick='SelectAllCheckBox()'/> ")
If page <> 1 Then
response.write("<a href="&thepage&"?page=1>首页</a> " )
response.write("<a href="&thepage&"?page="&(page-1)&">上页</a> " )
End If
If page <> pagenum Then
response.write("<a href="&thepage&"?page="&(page+1)&">下页</a> ")
response.write("<a href="&thepage&"?page="&pagenum&">尾页</a>")
End If

response.Write(" 当前"&page&"/"&pagenum&"页")
response.write(" 转到<input type='text' name='TurnTo' style='height:18px;width:20px;' maxlength='5'>")
%>
<style type="text/css">
<!--
/* CSS Document */
.turnTable {
font-size:14px;
}
.turnTable a:link {
text-decoration:none;
color: blue;
font-size: 13px;
}
.turnTable a:active {
text-decoration:blink
}
.turnTable a:hover {
text-decoration:underline;
color: green;
font-weight: bold;
}
.turnTable a:visited {
text-decoration: none;
font-size: 13px;
}
.turnTable th {
color:#FFFFFF;
font-size:16px;
font-weight:bold;
}

-->
</style>
<input style="height:20px;width:25px;" type="button" name="Submit" value="Go" onclick="javascript:pageto=TurnTo.value;location.href='<%=thepage%>?page='+pageto;">
<%
response.write("</div>")

end if

end function
'============================================================================%>
<script language='javascript'>
<!--
function SelectAllCheckBox(){ //全选
with(ShowTable){
if(rows.length==2){
if(checkSelectAll.checked==true)
checkbox.checked=true;
else
checkbox.checked=false;
}
else{
for(i=0;i<rows.length-1;i++){
if(checkSelectAll.checked==true)
checkbox(i).checked=true;
else
checkbox(i).checked=false;
}
}
}
}

function ClickDel(redirecturl){
if(confirm("确定删除?")){
location.href=redirecturl;
}
}

function ClickAlter(url,width,height,top,left){
var d=new Date();
window.open(url,"newpage"+d.getSeconds(),"width="+width+",height="+height+",top="+top+",left="+left+",toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no,fullscreen=2");
}
function ClickAdd(url,width,height,top,left){

window.open(url,"newpage","width="+width+",height="+height+",top="+top+",left="+left+",toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no,fullscreen=2");
}
function printPage(pagewith) {
if (window.print)
{
var Div1 = document.all.printTable.innerHTML;
//var Div2 = document.all.Div2.innerHTML;
// *****************************************************
// Div1、Div2即为你在打印的区域
// 这里根据你要打印的哪些内容,从原显示页面中用
// <div id=Div1>Div1....</div><div id=Div2>Div2...</div>
// Table 等其他HTML标签也可
// *****************************************************

var css='<style media="print">.Noprint { DISPLAY: none }</style>';
/*var css = '<style type="text/css" media=all>' +
'p { line-height: 120%}' +
'.ftitle { line-height: 120%; font-size: 18px; color: #000000}' +
'td { font-size: 10px; color: #000000}' +
'</style>' ;*/
// *****************************************************
// 重定义打印用的CSS,具体你想打印出什么样的格式全看你自己
// 了,但要注意:如果此处有什么同网页中不一致的,可能打印
// 出来的页面同网页格式、字体可能会有所不同
// *****************************************************

var webbro = '<center class=Noprint>' +
'<OBJECT id="WebBrowser" height="0" width="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" VIEWASTEXT></OBJECT>' +
'</center>';


var body =webbro + '</br><table width="' +pagewith+ '" border="0" cellspacing="0" cellpadding="5">' +
' <tr> ' +
' <td class="fbody"> ' +
' <div align="center" class=ftitle>' + Div1 + '</div>' //+ Div2 +
' </td>' +
' </tr>' +
'</table>';

// ******************************************************
// 在此处重新设置的打印格式,根据你的打印要求,将原显示的
// 网页的DIV内容重新组合,A4纸横打用920,竖打用640
// ******************************************************

document.body.innerHTML = '<center>' + css + body + '</center>';
// ******************************************************
// 重设document.body,打印文档准备就绪
// ******************************************************

//document.all.WebBrowser.ExecWB(7,1); //打印预览
window.print();
window.history.go(0);
// ******************************************************
// 调用打印命令,打印当前窗口内容。当你打印时其实是一张新
// 的网页了,但网页文件还是原先的。紧接着调用
// window.history.go(0),再回到打印前的页面,效果相当不差
// ******************************************************
}
}
-->
</script>

[此贴子已经被作者于2007-7-18 11:35:52编辑过]

2007-07-18 11:24
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
这种情况就是查询条件没有传递过来,
传递查询条件可以用request的方法来传递如
aaa.asp?Que=aaa
2007-07-18 11:40
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
得分:0 
你的意思是将参数放在 "<a href="&thepage&"?page=1>首页</a> 中的href里吗?
可是如果我的查询是按时间查询的话。条件是 where datetime between a1 and a2
时候该怎么办呢
2007-07-18 11:44
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
得分:0 
还有我的那个分页显示的程序ShowTable做成的是通用模板,如何使带条件的查询也可以写成通用模板
2007-07-18 11:49
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用jtj123456在2007-7-18 11:44:21的发言:
你的意思是将参数放在 "<a href="&thepage&"?page=1>首页</a> 中的href里吗?
可是如果我的查询是按时间查询的话。条件是 where datetime between a1 and a2
时候该怎么办呢

可能要进行URL编码了,而且个人意见觉得如果是直接传SQL语句,这种设计既不合理也不安全。就算进行了URL编码,如果编码被破解,最大的安全威胁就是SQL注入攻击(一种常见的黑客入侵网站的手段),所以说个人觉得从楼主给的代码上看,这段分页程序设计上就不很合理。
当然以上只是个人意见,对于楼主的程序功能不是很了解。

2007-07-18 11:58
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
得分:0 
回复:(yms123)以下是引用jtj123456在2007-7-18 11:...

那你能不能给一段代码看看啊,谢谢

2007-07-18 15:07
快速回复:[求助]带查询的分页显示问题
数据加载中...
 
   



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

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