超级ASP大分页_我的类容我做主
程序员文章站
2023-11-27 13:49:34
超级asp大分页_我的类容我做主 选择自 applebbs 的 blog ...
超级asp大分页_我的类容我做主 选择自 applebbs 的 blog
关键字 超级asp大分页_我的类容我做主
出处
<%
'===================================================================
'showmorepage asp版本
'version huangjm1.00
'code by maomao
'create date 2004-09-28
'qq:5144707
'http://blog.csdn.net/maomaoysq
'write for my lover:huangjm '本程序可以免费使用、修改,但请保留以上信息
'
'function
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持url多个参数:http://www.***.com/***.asp?aa=1&page=9&bb=2
'
'
'paramers:
'papgesize 定义分页每一页的记录数
'getcurpagenum 返回当前页的记录集数目此属性只读
'getrs 返回经过分页的recordset此属性只读
'getconn 得到数据库连接
'getsql 得到查询语句
'interface of class
'showpage 显示分页导航条,唯一的公用方法
'
'#############类调用样例#################
'创建对象
'set hjmpage=new showmorepage
'得到数据库连接
'hjmpage.getconn=conn
'sql语句
'hjmpage.getsql="select * from shop_books where newsbook=1 order by bookid desc"
'设置每一页的记录条数据为20条,默认显示10条
'hjmpage.pagesize=20
'显示分页信息,可在任意位置调用,可以调用多次
'hjmpage.showpage()
'set rs=hjmpage.getrs() '返回recordset
'显示数据开始
'这里就可以自定义显示方式了
'for i=1 to hjmpage.getcurpagenum '当前页的记录数目
'response.write left(trim(rs("bookname")),13)&"...."
'rs.movenext
'next
'显示数据结束
'set hjmpage=nothing
'#############类调用样例#################
'===================================================================
const btn_first="<font face=""webdings"">9</font>" '定义第一页按钮显示样式
const btn_prev="<font face=""webdings"">3</font>" '定义前一页按钮显示样式
const btn_next="<font face=""webdings"">4</font>" '定义下一页按钮显示样式
const btn_last="<font face=""webdings"">:</font>" '定义最后一页按钮显示样式
const xd_align="center" '定义分页信息对齐方式
const xd_width="100%" '定义分页信息框大小
class showmorepage
private obj_conn,obj_rs,str_sql,int_pagesize,str_errors,int_curpage,str_url,int_totalpage,int_totalrecord
'=================================================================
'pagesize 属性
'设置每一页的分页大小
'=================================================================
public property let pagesize(intvalue)
if isnumeric(intvalue) then
int_pagesize=clng(intvalue)
else
str_errors=str_errors & "pagesize的参数不正确"
showerror()
end if
end property
public property get pagesize
if int_pagesize="" or (not(isnumeric(int_pagesize))) then
pagesize=10
else
pagesize=int_pagesize
end if
end property
'=================================================================
'getrs 属性
'返回分页后的记录集
'=================================================================
public property get getrs()
if int_totalrecord= 0 then call getpage()
if not(obj_rs.eof and obj_rs.bof) then
if int_curpage<>1 then
if int_curpage-1<int_totalpage then
obj_rs.move (int_curpage-1)*pagesize
dim bookmark
bookmark=obj_rs.bookmark
else
int_curpage=1
end if
end if
end if
set getrs=obj_rs
end property
'=================================================================
'getcurpagenum 属性
'返回当前页的记录集数目
'=================================================================
public property get getcurpagenum()
dim int_pagenum
int_pagenum = int_pagesize
if int_totalrecord= 0 then call getpage()
if int_curpage>int_totalpage then
int_curpage=int_totalpage
int_pagenum = int_totalrecord-(int_totalpage-1)*int_pagesize
elseif int_curpage=int_totalpage then
int_pagenum = int_totalrecord-(int_totalpage-1)*int_pagesize
end if
getcurpagenum = int_pagenum
end property
'================================================================
'getconn 得到数据库连接
'
'================================================================
public property let getconn(sconn)
set obj_conn=sconn
end property
'================================================================
'getsql 得到查询语句
'
'================================================================
public property let getsql(svalue)
str_sql=svalue
end property
'==================================================================
'class_initialize 类的初始化
'初始化当前页的值
'
'==================================================================
private sub class_initialize
'========================
'设定一些参数的黙认值
'========================
int_pagesize=10 '设定分页的默认值为10
int_totalrecord= 0
'========================
'获取当前面的值
'========================
if request("page")="" then
int_curpage=1
elseif not(isnumeric(request("page"))) then
int_curpage=1
elseif cint(trim(request("page")))<1 then
int_curpage=1
else
int_curpage=cint(trim(request("page")))
end if
end sub
'====================================================================
'openrs 打开数据集
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
private sub openrs()
set obj_rs=server.createobject("adodb.recordset")
obj_rs.open str_sql,obj_conn,1,1
end sub
'====================================================================
'getpage 创建分页导航条
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
private sub getpage()
if typename(obj_rs)<>"object" then call openrs()
int_totalrecord=obj_rs.recordcount
if int_totalrecord<=0 then
str_errors=str_errors & "总记录数为零,请输入数据"
call showerror()
end if
if int_totalrecord mod pagesize =0 then
int_totalpage = int_totalrecord \ int_pagesize
else
int_totalpage = int_totalrecord \ int_pagesize+1
end if
if int_curpage>int_totalpage then
int_curpage=int_totalpage
end if
end sub
'====================================================================
'showpage 创建分页导航条
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
public sub showpage()
dim str_tmp
str_url = geturl()
if int_totalrecord= 0 then call getpage()
'==================================================================
'显示分页信息,各个模块根据自己要求更改显求位置
'==================================================================
response.write ""
str_tmp=showfirstprv
response.write str_tmp
str_tmp=shownumbtn
response.write str_tmp
str_tmp=shownextlast
response.write str_tmp
str_tmp=showpageinfo
response.write str_tmp
response.write ""
end sub
'====================================================================
'showfirstprv 显示首页、前一页
'
'
'====================================================================
private function showfirstprv()
dim str_tmp,int_prvpage
if int_curpage=1 then
str_tmp=btn_first&" "&btn_prev
else
int_prvpage=int_curpage-1
str_tmp="<a href="""&str_url & "1" & """>" & btn_first&"</a> <a href=""" & str_url & cstr(int_prvpage) & """>" & btn_prev&"</a>"
end if
showfirstprv=str_tmp
end function
'====================================================================
'shownextlast 下一页、末页
'
'
'====================================================================
private function shownextlast()
dim str_tmp,int_nextpage
if int_curpage>=int_totalpage then
str_tmp=btn_next & " " & btn_last
else
int_nextpage=int_curpage+1
str_tmp="<a href=""" & str_url & cstr(int_nextpage) & """>" & btn_next&"</a> <a href="""& str_url & cstr(int_totalpage) & """>" & btn_last&"</a>"
end if
shownextlast=str_tmp
end function
'====================================================================
'shownumbtn 数字导航
'每次显示10页
'
'====================================================================
private function shownumbtn()
dim i,str_tmp,m,n
m = int_curpage - 4
n = int_totalpage
if n>1 then
for i = 1 to 10
if m < 1 then m = 1
if m > n then
exit for
end if
str_tmp=str_tmp & "[<a href=""" & str_url & cstr(i) & """>"&i&"</a>] "
m = m + 1
next
end if
shownumbtn=str_tmp
end function
'====================================================================
'showpageinfo 分页信息
'更据要求自行修改
'
'====================================================================
private function showpageinfo()
dim str_tmp
str_tmp="页次:"&int_curpage&"/"&int_totalpage&"页 共"&int_totalrecord&"条记录 "&int_pagesize&"条/每页"
showpageinfo=str_tmp
end function
'==================================================================
'geturl 得到当前的url
'更据url参数不同,获取不同的结果
'
'==================================================================
private function geturl()
dim strurl,tmp_url,i,j,search_str,result_url
search_str="page="
strurl=request.servervariables("url")
strurl=split(strurl,"/")
i=ubound(strurl,1)
tmp_url=strurl(i)'得到当前页文件名
str_params=trim(request.servervariables("query_string"))
if str_params="" then
result_url=tmp_url & "?page="
else
if instrrev(str_params,search_str)=0 then
result_url=tmp_url & "?" & str_params &"&page="
else
j=instrrev(str_params,search_str)-2
if j=-1 then
result_url=tmp_url & "?page="
else
str_lparams=left(str_params,j)
str_rparams=right(str_params,len(str_params)-j-1)
if instr(str_rparams,"&")<>0 then
str_rparams=right(str_rparams,len(str_rparams)-instr(str_rparams,"&")+1)
else
str_rparams = ""
end if
result_url=tmp_url & "?" & str_lparams&str_rparams&"&page="
end if
end if
end if
geturl=result_url
end function
'====================================================================
' 设置 terminate 事件。
'
'====================================================================
private sub class_terminate
obj_rs.close
set obj_rs=nothing
obj_conn.close
set obj_conn = nothing
end sub
'====================================================================
'showerror 错误提示
'
'
'====================================================================
private sub showerror()
if str_errors <> "" then
response.write("" & str_errors & "")
response.end
end if
end sub
end class
%>
<!--#include file="include/function.asp"-->
<%
dim conn
call dbconnect()
'#############类调用样例#################
'创建对象
set hjmpage=new showmorepage
'得到数据库连接
hjmpage.getconn=conn
'sql语句
hjmpage.getsql="select top 6 * from shop_books where newsbook=1 order by bookid desc"
'设置每一页的记录条数据为5条
hjmpage.pagesize=2
set rs=hjmpage.getrs() '返回recordset
'显示分页信息,这个方法可以,在set rs=hjmpage.getrs()以后,可在任意位置调用,可以调用多次
hjmpage.showpage()
'显示数据
response.write("<br/>")
for i=1 to hjmpage.getcurpagenum '当前页的记录数目
'这里就可以自定义显示方式了
%>
关键字 超级asp大分页_我的类容我做主
出处
<%
'===================================================================
'showmorepage asp版本
'version huangjm1.00
'code by maomao
'create date 2004-09-28
'qq:5144707
'http://blog.csdn.net/maomaoysq
'write for my lover:huangjm '本程序可以免费使用、修改,但请保留以上信息
'
'function
'本程序主要是对数据分页的部分进行了封装,而数据显示部份完全由用户自定义,
'支持url多个参数:http://www.***.com/***.asp?aa=1&page=9&bb=2
'
'
'paramers:
'papgesize 定义分页每一页的记录数
'getcurpagenum 返回当前页的记录集数目此属性只读
'getrs 返回经过分页的recordset此属性只读
'getconn 得到数据库连接
'getsql 得到查询语句
'interface of class
'showpage 显示分页导航条,唯一的公用方法
'
'#############类调用样例#################
'创建对象
'set hjmpage=new showmorepage
'得到数据库连接
'hjmpage.getconn=conn
'sql语句
'hjmpage.getsql="select * from shop_books where newsbook=1 order by bookid desc"
'设置每一页的记录条数据为20条,默认显示10条
'hjmpage.pagesize=20
'显示分页信息,可在任意位置调用,可以调用多次
'hjmpage.showpage()
'set rs=hjmpage.getrs() '返回recordset
'显示数据开始
'这里就可以自定义显示方式了
'for i=1 to hjmpage.getcurpagenum '当前页的记录数目
'response.write left(trim(rs("bookname")),13)&"...."
'rs.movenext
'next
'显示数据结束
'set hjmpage=nothing
'#############类调用样例#################
'===================================================================
const btn_first="<font face=""webdings"">9</font>" '定义第一页按钮显示样式
const btn_prev="<font face=""webdings"">3</font>" '定义前一页按钮显示样式
const btn_next="<font face=""webdings"">4</font>" '定义下一页按钮显示样式
const btn_last="<font face=""webdings"">:</font>" '定义最后一页按钮显示样式
const xd_align="center" '定义分页信息对齐方式
const xd_width="100%" '定义分页信息框大小
class showmorepage
private obj_conn,obj_rs,str_sql,int_pagesize,str_errors,int_curpage,str_url,int_totalpage,int_totalrecord
'=================================================================
'pagesize 属性
'设置每一页的分页大小
'=================================================================
public property let pagesize(intvalue)
if isnumeric(intvalue) then
int_pagesize=clng(intvalue)
else
str_errors=str_errors & "pagesize的参数不正确"
showerror()
end if
end property
public property get pagesize
if int_pagesize="" or (not(isnumeric(int_pagesize))) then
pagesize=10
else
pagesize=int_pagesize
end if
end property
'=================================================================
'getrs 属性
'返回分页后的记录集
'=================================================================
public property get getrs()
if int_totalrecord= 0 then call getpage()
if not(obj_rs.eof and obj_rs.bof) then
if int_curpage<>1 then
if int_curpage-1<int_totalpage then
obj_rs.move (int_curpage-1)*pagesize
dim bookmark
bookmark=obj_rs.bookmark
else
int_curpage=1
end if
end if
end if
set getrs=obj_rs
end property
'=================================================================
'getcurpagenum 属性
'返回当前页的记录集数目
'=================================================================
public property get getcurpagenum()
dim int_pagenum
int_pagenum = int_pagesize
if int_totalrecord= 0 then call getpage()
if int_curpage>int_totalpage then
int_curpage=int_totalpage
int_pagenum = int_totalrecord-(int_totalpage-1)*int_pagesize
elseif int_curpage=int_totalpage then
int_pagenum = int_totalrecord-(int_totalpage-1)*int_pagesize
end if
getcurpagenum = int_pagenum
end property
'================================================================
'getconn 得到数据库连接
'
'================================================================
public property let getconn(sconn)
set obj_conn=sconn
end property
'================================================================
'getsql 得到查询语句
'
'================================================================
public property let getsql(svalue)
str_sql=svalue
end property
'==================================================================
'class_initialize 类的初始化
'初始化当前页的值
'
'==================================================================
private sub class_initialize
'========================
'设定一些参数的黙认值
'========================
int_pagesize=10 '设定分页的默认值为10
int_totalrecord= 0
'========================
'获取当前面的值
'========================
if request("page")="" then
int_curpage=1
elseif not(isnumeric(request("page"))) then
int_curpage=1
elseif cint(trim(request("page")))<1 then
int_curpage=1
else
int_curpage=cint(trim(request("page")))
end if
end sub
'====================================================================
'openrs 打开数据集
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
private sub openrs()
set obj_rs=server.createobject("adodb.recordset")
obj_rs.open str_sql,obj_conn,1,1
end sub
'====================================================================
'getpage 创建分页导航条
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
private sub getpage()
if typename(obj_rs)<>"object" then call openrs()
int_totalrecord=obj_rs.recordcount
if int_totalrecord<=0 then
str_errors=str_errors & "总记录数为零,请输入数据"
call showerror()
end if
if int_totalrecord mod pagesize =0 then
int_totalpage = int_totalrecord \ int_pagesize
else
int_totalpage = int_totalrecord \ int_pagesize+1
end if
if int_curpage>int_totalpage then
int_curpage=int_totalpage
end if
end sub
'====================================================================
'showpage 创建分页导航条
'有首页、前一页、下一页、末页、还有数字导航
'
'====================================================================
public sub showpage()
dim str_tmp
str_url = geturl()
if int_totalrecord= 0 then call getpage()
'==================================================================
'显示分页信息,各个模块根据自己要求更改显求位置
'==================================================================
response.write ""
str_tmp=showfirstprv
response.write str_tmp
str_tmp=shownumbtn
response.write str_tmp
str_tmp=shownextlast
response.write str_tmp
str_tmp=showpageinfo
response.write str_tmp
response.write ""
end sub
'====================================================================
'showfirstprv 显示首页、前一页
'
'
'====================================================================
private function showfirstprv()
dim str_tmp,int_prvpage
if int_curpage=1 then
str_tmp=btn_first&" "&btn_prev
else
int_prvpage=int_curpage-1
str_tmp="<a href="""&str_url & "1" & """>" & btn_first&"</a> <a href=""" & str_url & cstr(int_prvpage) & """>" & btn_prev&"</a>"
end if
showfirstprv=str_tmp
end function
'====================================================================
'shownextlast 下一页、末页
'
'
'====================================================================
private function shownextlast()
dim str_tmp,int_nextpage
if int_curpage>=int_totalpage then
str_tmp=btn_next & " " & btn_last
else
int_nextpage=int_curpage+1
str_tmp="<a href=""" & str_url & cstr(int_nextpage) & """>" & btn_next&"</a> <a href="""& str_url & cstr(int_totalpage) & """>" & btn_last&"</a>"
end if
shownextlast=str_tmp
end function
'====================================================================
'shownumbtn 数字导航
'每次显示10页
'
'====================================================================
private function shownumbtn()
dim i,str_tmp,m,n
m = int_curpage - 4
n = int_totalpage
if n>1 then
for i = 1 to 10
if m < 1 then m = 1
if m > n then
exit for
end if
str_tmp=str_tmp & "[<a href=""" & str_url & cstr(i) & """>"&i&"</a>] "
m = m + 1
next
end if
shownumbtn=str_tmp
end function
'====================================================================
'showpageinfo 分页信息
'更据要求自行修改
'
'====================================================================
private function showpageinfo()
dim str_tmp
str_tmp="页次:"&int_curpage&"/"&int_totalpage&"页 共"&int_totalrecord&"条记录 "&int_pagesize&"条/每页"
showpageinfo=str_tmp
end function
'==================================================================
'geturl 得到当前的url
'更据url参数不同,获取不同的结果
'
'==================================================================
private function geturl()
dim strurl,tmp_url,i,j,search_str,result_url
search_str="page="
strurl=request.servervariables("url")
strurl=split(strurl,"/")
i=ubound(strurl,1)
tmp_url=strurl(i)'得到当前页文件名
str_params=trim(request.servervariables("query_string"))
if str_params="" then
result_url=tmp_url & "?page="
else
if instrrev(str_params,search_str)=0 then
result_url=tmp_url & "?" & str_params &"&page="
else
j=instrrev(str_params,search_str)-2
if j=-1 then
result_url=tmp_url & "?page="
else
str_lparams=left(str_params,j)
str_rparams=right(str_params,len(str_params)-j-1)
if instr(str_rparams,"&")<>0 then
str_rparams=right(str_rparams,len(str_rparams)-instr(str_rparams,"&")+1)
else
str_rparams = ""
end if
result_url=tmp_url & "?" & str_lparams&str_rparams&"&page="
end if
end if
end if
geturl=result_url
end function
'====================================================================
' 设置 terminate 事件。
'
'====================================================================
private sub class_terminate
obj_rs.close
set obj_rs=nothing
obj_conn.close
set obj_conn = nothing
end sub
'====================================================================
'showerror 错误提示
'
'
'====================================================================
private sub showerror()
if str_errors <> "" then
response.write("" & str_errors & "")
response.end
end if
end sub
end class
%>
<!--#include file="include/function.asp"-->
<%
dim conn
call dbconnect()
'#############类调用样例#################
'创建对象
set hjmpage=new showmorepage
'得到数据库连接
hjmpage.getconn=conn
'sql语句
hjmpage.getsql="select top 6 * from shop_books where newsbook=1 order by bookid desc"
'设置每一页的记录条数据为5条
hjmpage.pagesize=2
set rs=hjmpage.getrs() '返回recordset
'显示分页信息,这个方法可以,在set rs=hjmpage.getrs()以后,可在任意位置调用,可以调用多次
hjmpage.showpage()
'显示数据
response.write("<br/>")
for i=1 to hjmpage.getcurpagenum '当前页的记录数目
'这里就可以自定义显示方式了
%>