+ -
当前位置:首页 → 问答吧 → 偶的分页显示函数(2008年2月9日更新)

偶的分页显示函数(2008年2月9日更新)

时间:2008-02-04

来源:互联网

原文地址:http://www.oldjan.cn/function-about-page/2008/02/03/

根据adleyliu的PHP经典分页导航函数
修改而成,更适合我些,嘿嘿,共享出来给大家

UPDATE:我做了个轮子。。。

page1.gif (6.46 KB)
2008-2-3 23:16

page2.gif (7.17 KB)
2008-2-3 23:16

page4.gif (7.56 KB)
2008-2-3 23:16

page9.gif (7.39 KB)
2008-2-3 23:16

page11.gif (6.55 KB)
2008-2-3 23:16


下载代码: pagedisplay.zip (1.3 KB)
pagedisplay.zip (1.3 KB)
下载次数: 183
2008-2-9 18:14
复制PHP内容到剪贴板
PHP代码:

<?php
/****************************
作者      : Oldjan
功能      : 分页导航显示函数
更新      : 2008-02-09 17:59
$selfurl  : 当前脚本路径
$query    : 脚本请求数组
$queryurl : 脚本请求字符串
$url      : 新的脚本URL
$total    : 记录总数
$page     : 当前页数
$pagenum  : 每页显示记录数
$pagesum  : 总页数
$pageleft : 最左边页
$pageright: 最右边页
*****************************/
function pagedisplay($total, $pagenum) {
        $selfurl = $_SERVER['PHP_SELF'];
        parse_str($_SERVER['QUERY_STRING'], $query);
        $page = intval($query['page']) > 0 ? intval($query['page']) : 1;
        $pagesum = ceil($total / $pagenum);
        if($page > $pagesum) {
                $page = 1;
        }
        //判断最左边页数和最右边页数,在当前页数左右都不超过2个
        $pageleft = $page >= 4 ? $page - 2 : 1;
        $pageright = $page + 2 <= $pagesum ? $page + 2 : $pagesum;
        //若当前页数大于1,则显示上一页按钮
        if(1 < $page) {
                $query['page'] = $page - 1;
                $queryurl = http_build_query($query);
                $url = $selfurl.'?'.$queryurl;
                $pageoutput .= '<a href="'.$url.'"><<</a>';
        }
        //若最左边页数大于1,则显示第一页按钮
        if(1 < $pageleft) {
                $query['page'] = 1;
                $queryurl = http_build_query($query);
                $url = $selfurl.'?'.$queryurl;
                $pageoutput .= '<a href="'.$url.'">1...</a>';
        }
        //显示最左边按钮到最右边按钮
        for($i = $pageleft; $i <= $pageright; $i++) {
                if($page == $i) {
                        $pageoutput .= '<span class="self">'.$i.'</span>';
                } else {
                        $query['page'] = $i;
                        $queryurl = http_build_query($query);
                        $url = $selfurl.'?'.$queryurl;
                        $pageoutput .= '<a href="'.$url.'">'.$i.'</a>';
                }
        }
        //若最右边页数小于总页数,则显示最后一页按钮
        if($pageright < $pagesum) {
                $query['page'] = $pagesum;
                $queryurl = http_build_query($query);
                $url = $selfurl.'?'.$queryurl;
                $pageoutput .= '<a href="'.$url.'">...'.$pagesum.'</a>';
        }
        //若当前页数小于总页数,则显示下一页按钮
        if($pagesum > $page) {
                $query['page'] = $page + 1;
                $queryurl = http_build_query($query);
                $url = $selfurl.'?'.$queryurl;
                $pageoutput .= '<a href="'.$url.'">>></a>';
        }
        return $pageoutput;
}

$pagenum = 11;
$total= 111;
$pagedisplay = pagedisplay($total, $pagenum);
?>
<html>
<head>
<meta http-equiv="Content-Type" c />
<title>分页导航显示函数演示</title>
<style type="text/css">
<!--
.page {text-align: right; clear: both;margin: 0; padding: 11px; font: 12px Arial, Helvetica, sans-serif; color: #6396d6;}
.page .self {font-weight: bold; text-decoration: underline; background: #298ac6; color: #fff; margin: 0px 2px; padding: 3px; border: #6396d6 1px solid;}
.page a {color: #6396d6; background: #f7fbff; margin: 0px 2px; padding: 3px; text-decoration: none; border: #6396d6 1px solid;}
.page a:visited {color: #6396d6;}
.page a:hover {background: #298ac6; color: #fff; text-decoration: underline;}
-->
</style>
</head>
<body>
<div class="page"><?php echo $pagedisplay;?></div>
</body>
</html>
[ 本帖最后由 oldjan 于 2008-2-9 18:16 编辑 ]

作者: oldjan   发布时间: 2008-02-03

不清楚  学习

作者: php?   发布时间: 2008-02-04

oldjan  如此大段代码  希望能加上注释  供新人参考  谢谢 您

作者: php?   发布时间: 2008-02-04

鼓励共享~

作者: luzhou   发布时间: 2008-02-04

$self = $_SERVER['PHP_SELF'];
$pageoutput .= '<a href="'.$self.'?page='.($page - 1).'"><<</a>';

如果页面还带有其他参数呢?

用  http_build_query 吧

作者: dvaknheo   发布时间: 2008-02-04

@php? 已加注释

@dvaknheo HOHO,我太马虎啦,已修改

[ 本帖最后由 oldjan 于 2008-2-9 18:08 编辑 ]

作者: oldjan   发布时间: 2008-02-05

学到了....
看了一下PEAR 那个PAGER,原来人家是自己写的build_query

作者: liuxingyuyuni   发布时间: 2008-02-11

作者: luzhou   发布时间: 2008-02-11