PHP通用分页实现

自己写的一个通用分页,带下拉选择,可设置显示的分页链接数,不多说,看代码和注释:

1<?php
2//Written by Shaoyun 20:17 2008年5月31日
3//Email:shaoyun at yeah.net
4//Blog:http://shaoyun.cnblogs.com
5//分页函数:splitpage(记录总数,每页显示记录数,显示几条分页链接)
6function splitpage($rscount,$pagesize,$shownum){
7//计算总页数
8if ($rscount % $pagesize){
9  $pagenum=(int)($rscount/$pagesize)+1;
10}else{
11  $pagenum=(int)($rscount/$pagesize);
12}
13//过滤获取正确的页码
14if(!isset($_GET["page"])){
15  $curpage=1;
16}elseif(is_numeric($_GET["page"])){
17  if($_GET["page"]>$pagenum)
18    $curpage=$pagenum;
19  else
20    $curpage=(int)$_GET["page"];
21  if($curpage<1)
22    $curpage=1;
23}else{
24  $curpage=1;
25}
26//设置前一页、后一页、上一页、下一页
27$first_page=1;
28$last_page=$pagenum;
29$up_page=$curpage-1;
30$down_page=$curpage+1;
31//获取当前文件名
32$addr_url=$_SERVER["SCRIPT_NAME"];
33$addr_url=strrev($addr_url);
34$addr_url=substr($addr_url,0,strpos($addr_url,"/"));
35$addr_url=strrev($addr_url);
36$addr_url=$addr_url."?page=";
37
38$page_html='共'.$rscount.'条记录&nbsp;'.$pagesize.'条/页&nbsp;第'.$curpage.'/'.$pagenum.'页&nbsp;';
39
40$page_html.="<a href='".$addr_url.$first_page."'>首页</a>&nbsp;";
41if($curpage>1){
42  $page_html.="<a href='".$addr_url.$up_page."'>上一页</a>&nbsp;";
43}else{
44  $page_html.="上一页&nbsp;";
45}
46//计算分页边界
47if($shownum % 2){
48  $show_front_num=(int)($shownum/2);
49  $show_back_num=(int)($shownum/2);
50}else{
51  $show_front_num=(int)($shownum/2)-1;
52  $show_back_num=(int)($shownum/2);
53}
54if($curpage<$show_front_num+1){
55  $fbegin=1;
56  $fend=$shownum;
57}elseif($curpage+$show_back_num>$pagenum){
58  $fend=$pagenum;
59  $fbegin=$pagenum-$shownum+1;
60}else{
61  $fbegin=$curpage-$show_front_num;
62  $fend=$curpage+$show_back_num;
63}
64//分页链接
65for($idx=$fbegin;$idx<$fend+1;++$idx){
66  if($curpage==$idx){
67    $page_html.="<b>".$idx."</b>&nbsp;";
68  }else{
69    $page_html.="<a href='".$addr_url.$idx."'>".$idx."</a>&nbsp;";
70  }
71}
72
73if($curpage<$pagenum){
74  $page_html.="<a href='".$addr_url.$down_page."'>下一页</a>&nbsp;";
75}else{
76  $page_html.="下一页&nbsp;";
77}
78$page_html.="<a href='".$addr_url.$last_page."'>尾页</a>&nbsp;";
79//下拉导航代码
80$page_html.="跳转到&nbsp;";
81$page_html.="<select onChange=window.location.href=this.options[this.selectedIndex].value>";
82for($idx=1;$idx<$pagenum+1;++$idx){
83  if($curpage==$idx){
84    $page_html.="<option value='".$addr_url.$idx."' selected>第".$idx."页</option>";
85  }else{
86    $page_html.="<option value='".$addr_url.$idx."'>第".$idx."页</option>";
87  }
88}
89$page_html.="</select>";
90
91echo $page_html;
92}
93?>

时间: 2025-01-02 07:24:12

PHP通用分页实现的相关文章

超酷的通用分页显示控制 (二) 加入查询控制

分页|控制|显示 在上一篇中,我们分析了一个简单的通用分页代码控制.但是通常我们在分页的 ASP 页面中要使用到查询功能,那么怎样将查询也"封装"起来呢?同样需要用到 include 方式. 我们可以把查询看作两部分,1.输入,即接收用户输入的查询字符串,我们把它放在 query.inc 中2.输出,即根据用户输入的内容构造查询条件,我们把它放在 query_result.inc 中 这样一来,我们的思路就很清晰了,1.将 query_result.inc 放在 SQL 语句之前,构造

一个相当独立的.通用分页控件c#源码

分页|控件      通用ASP.NET数据分页控件 对于几乎所有的数据表现Web应用来说,组织好数据的显示方式.避免给用户带来混乱的感觉就是最主 要的目标之一.每个页面显示20条记录当然是可以接受的,但每页显示10000条记录就很容易给用户带来不便了.将数据分成多个页面显示,即对数据进行分 页,是解决此类问题的最常见的办法. 一.慨述 ASP.NET本身只提供了一个支持数据分页的控件,即 DataGrid分页控件,不过它比较适合Intranet环境使用,对于Internet环境来说,DataG

ASP通用分页类

分页 一.类的属性.方法 这是一个ASP通用分页类.你可以用它方便的给记录集分页,当然在网上有许多的分页类和分页函数.本分页主要有GetConn.GetRS.SQL.URL.CSSFile.FldName.FldNote.FldWidth.FldAlign.ShowPageType.TleFTColor.TleWidth.PageSize.ShowWidth.Init.Pages.ShowData.Close等属性和方法. 1.GetConn属性:用来获取一个已创建的Connection对象.

ASP通用分页的实现

自己写的通用分页,可设置显示的分页链接数,带下拉选择: 1<% 2'Written by Shaoyun 20:17 2008年5月29日 0:38 3'Email:shaoyun at yeah.net 4'Blog:http://shaoyun.cnblogs.com 5'分页函数:splitpage(记录总数,每页显示记录数,显示几条分页链接) 6Function splitpage(rscount,pagesize,shownum) 7 8Dim pagenum,curpage,firs

通用分页存储过程真的有注入漏洞吗

今天看了两篇关于存储过程SQL注入漏洞的文章: 1):如此高效通用的分页存储过程是带有sql注入漏洞的 2):防SQL注入:生成参数化的通用分页查询语句 怎么看怎么觉的别扭,在我印象中存储过程是不会存在注入漏洞的啊?起码我目前的水平还不了解如何 注入存储过程.如果大家有注入的方法请指教.换句话说存储过程本身并无注入漏洞,只不过有漏洞大多 都是因为程序漏洞导致. 我们来简化下之前两位园友讨论的分页存储过程,原代码太长,我这里呢写一个针对一个单表查询的存 储过程.创建一个用户表,表结构如下:有三个字

防SQL注入:生成参数化的通用分页查询语句

前些时间看了玉开兄的"如此高效通用的分页存储过程是带有sql注入漏洞的"这篇文章,才突然想起 某个项目也是使用了累似的通用分页存储过程.使用这种通用的存储过程进行分页查询,想要防SQL注入 ,只能对输入的参数进行过滤,例如将一个单引号"'"转换成两个单引号"''",但这种做法是不安全 的,厉害的黑客可以通过编码的方式绕过单引号的过滤,要想有效防SQL注入,只有参数化查询才是最终 的解决方案.但问题就出在这种通用分页存储过程是在存储过程内部进行SQ

一个独立的通用分页控件c#源码

用户可以方便地改换显示控件.改变分页控件本身的外观.例如,在图一中,和分页控件协作的显示控件可发换成一个DataGrid控件,页面编号链接和四个导航按钮分两行显示. ASP.NET 支持创建定制Web控件的三种方式:用户控件,复合控件,自定义控件.第三种控件即自定义控件的名称很容易引起误解.实际上,所有这三种控件都应该算是自 定义控件.复合控件和微软所谓的自定义控件的不同之处在于,前者要用到CreateChildControls()方法, CreateChildControls()方法允许控件根

SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

原文:SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页) SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅途(www.Zuowenjun.cn) --CreateDate:2015-06-02 --Function:分页获取数据 /******************/ crea

Asp.Net实现的通用分页函数_实用技巧

本文实例讲述了Asp.Net实现的通用分页函数.分享给大家供大家参考,具体如下: 功能: 1.每页设置显示9页,超过9页,点5页后的+1页显示(可以随便修改) 2.CSS样式自己可以设置 3.无任何咋代码产生,利于搜索引擎优化 分页程序 objPDS = new PagedDataSource(); objPDS.DataSource = dtTable.DefaultView;//绑定数据源 objPDS.AllowPaging = true; objPDS.PageSize =10;//分页