通用分页实现(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?>
posted @ 2008-06-02 13:14  shaoyun  阅读(383)  评论(0编辑  收藏  举报