0

0

php分页类程序员

php中文网

php中文网

发布时间:2016-06-08 17:30:14

|

1226人浏览过

|

来源于php中文网

原创

class Page {
    // public param
    public $pageName    = 'page';   // 默认 page 标签,即 filename.php?pageName=4 中的 pageName
    public $prevPage    = '     public $nextPage    = '>';      // 下一页
    public $prevBar     = '     public $nextBar     = '>>';     // 下一分页条
    // private param
    private $_totalNums = 1;        // 总记录数
    private $_barNum    = 10;       // 分页条显示分页个数
    private $_totalPage = 0;        // 总页数
    private $_nowPage   = 1;        // 当前页
    private $_perPage   = 10;       // 每页显示记录数
    private $_preUrl    = '';       // url 前缀
    private $_preNow    = 0;        // 当前页前显示分页个数 (范围应该是 0 至 $_barNum-1)
    private $_fromPage  = 0;        // 分页条起点
    private $_toPage    = 0;        // 分页条末端
    private $_offset    = 0;        // sql 查询记录偏移量
    // public functions -----------------------------------------------------------------
    // 构造函数 初始化分页变量
    // @param $nums int     总记录数
    // @param $per  int     每页显示记录数
    // @param $now  int     当前页数
    // @param $url  string  url前缀 默认为空
    public function __construct($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '') {
        // 初始化
        $this->_set($nums, $per, $preNow, $barNum, $now, $url);
        $this->_totalPage   = ceil($this->_totalNums/$this->_perPage);
        $this->_offset      = ($this->_nowPage - 1) * $this->_perPage;
    }
    // 上一页
    public function getPrevPage() {
        // 当前页不是第一页
        if($this->_nowPage > 1) {
            return $this->_setLink($this->_setUrl($this->_nowPage - 1), $this->prevPage, 'prevpage');
        }
    }
    // 下一页
    public function getNextPage() {
        // 当前页小于总页数
        if($this->_nowPage _totalPage) {
            return $this->_setLink($this->_setUrl($this->_nowPage + 1), $this->nextPage, 'nextpage');
        }
    }
    // 第一页
    public function getFirstPage() {
        // 起点不是第一页
        if(($this->_nowPage - $this->_preNow) > 1) {
            return $this->_setLink($this->_setUrl(1), '1...', 'firstpage');
        }
    }
    // 最后一页
    public function getLastPage() {
        // 末端不大于总页数
        if(($this->_nowPage - $this->_preNow + $this->_barNum) _totalPage) {
            return $this->_setLink($this->_setUrl($this->_totalPage), '...' . $this->_totalPage, 'lastpage');
        }
    }
    // 上一分页条
    public function getPrevBar() {
        // 起点大于一个分页条数
        if(($this->_nowPage - $this->_preNow) > $this->_barNum) {
            return $this->_setLink($this->_setUrl(($this->_nowPage - $this->_preNow) - $this->_barNum), $this->prevBar, 'prevbar');
        }
    }
    // 下一分页条
    public function getNextBar() {
        // 末端不大于总页数
        if(($this->_nowPage - $this->_preNow + $this->_barNum) _totalPage) {
            return $this->_setLink($this->_setUrl($this->_fromPage + $this->_barNum), $this->nextBar, 'nextbar');
        }
    }
    // 分页条
    public function pageBar() {
        // 初始化分页条的始末端点
        $this->_toPage = $this->_nowPage + ($this->_barNum - $this->_preNow - 1);
        if($this->_toPage > $this->_totalPage) {
            $this->_preNow = $this->_barNum - ($this->_totalPage - $this->_nowPage + 1);
            $this->_toPage = $this->_totalPage;
        }
        if($this->_toPage _barNum) {
            $this->_toPage = $this->_barNum;
        }
        $this->_fromPage = $this->_nowPage - $this->_preNow;
        if($this->_fromPage             $this->_fromPage = 1;
        }
        // 初始化分页条
        $return = '';
        for($i = $this->_fromPage; $i _toPage; $i++) {
            if($i != $this->_nowPage) {
                $return .= $this->_setLink($this->_setUrl($i), $i, 'page');
            } else {
                $return .= '' . $i . '';
            }
        }
        return $return;
    }
    // 返回偏移量 用于 sql 查询
    public function getOffset() {
        return $this->_offset;
    }
    // 返回总记录数
    public function getTotalNums() {
        return '' . $this->_totalNums . '';
    }
    // 显示分页
    public function showPage() {
        return $this->getTotalNums() . $this->getFirstPage() . $this->getPrevBar() . $this->getPrevPage() . $this->pageBar() . $this->getNextPage() . $this->getNextBar() . $this->getLastPage();
    }
    // private functions ----------------------------------------------------------------
    //
    private function _set($nums, $per, $preNow, $barNum, $now, $url) {
        // 设置总记录数
        if($nums > 0) {
            $this->_totalNums = $nums;
        }
        // 设置每页显示记录数
        if($per > 0) {
            $this->_perPage = $per;
        }
        // 设置当前页前显示分页个数
        if($preNow > 0) {
            $this->_preNow = $preNow;
        }
        // 设置分页条链接个数
        if($barNum > 0) {
            $this->_barNum = $barNum;
        }
        // 设置当前页
        if(empty($now)) {
            // 自动获取
            if(isset($_GET[$this->pageName])) {
                $this->_nowPage = intval($_GET[$this->pageName]);
            }
        } else {
            // $now 已手动处理
            $this->_nowPage = intval($now); //
        }
        // 设置 url 前缀
        if(!empty($url)) {
            // $url 已手动处理
            $this->_preUrl = $url . (stristr($url, '?') ? '&' : '?') . $this->pageName . '=';
        } else {
            // 自动获取
            if(empty($_SERVER['QUERY_STRING'])) {
                // url 中不存在查询
                $this->_preUrl = $_SERVER['REQUEST_URI'] . '?' . $this->pageName . '=';
            } else {
                if(stristr($_SERVER['QUERY_STRING'], $this->pageName . '=')) {
                    // 查询中有 page=n(2,3...)
                    $this->_preUrl = str_replace($this->pageName . '=' . $this->_nowPage, '', $_SERVER['REQUEST_URI']);
                    $lastCharacter = $this->_preUrl[strlen($this->_preUrl) - 1];
                    if($lastCharacter == '?' || $lastCharacter == '&') {
                        // page=n(2,3...) 在原 url 的末尾
                        $this->_preUrl .= $this->pageName . '=';
                    } else {
                        // page=n(2,3...) 不在原 url 的末尾
                        $this->_preUrl .= '&' . $this->pageName . '=';
                    }
                } else {
                    // 查询中没有 page=n(2,3...)
                    $this->preUrl = $_SERVER['REQUEST_URI'] . '&' . $this->pageName . '=';
                }
            }
        }
    }
    // 设置链接地址
    private function _setUrl($pageNo) {
        return $this->_preUrl . $pageNo;
    }
    // 设置链接
    private function _setLink($url, $link, $style = '') {
        $style = 'class="' . $style . '"';
        return '' . $link . '';
    }
}
//

使用方法

动力先锋仿阿里巴巴B2B电子商务系统
动力先锋仿阿里巴巴B2B电子商务系统

前台功能介绍:1、网页首页显示有高级会员推荐,精品推荐,商业机会分类列表,最新供求信息,网站动态,推荐企业,行业动态等;2、商业机会栏目功能有:二级分类,已经带有详细分类的数据库,后台可以更改增加操作,并可以推荐公司,栏目分为分类显示信息,最新的采购、供应、合作和代理信息,搜索时同样按分类,信息,时间,交易类型等搜索;3、展厅展品栏目功能:二级分类,已经带有详细分类的数据库,后台可以更改增加操作,

下载

$total = 1241245;
//class  Page($nums, $per = '', $preNow = '', $barNum = '', $now = '', $url = '')
$page = new Page($total);
$pager = $page->showPage();
$smarty->assign('pager', $pager);
$smarty->display('index.tpl');

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JavaScript高级框架设计视频教程
JavaScript高级框架设计视频教程

共22课时 | 3.6万人学习

AngularJS教程
AngularJS教程

共24课时 | 3.2万人学习

CSS3实现按钮特效视频教程
CSS3实现按钮特效视频教程

共15课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号