`

php实现google样式的分页

    博客分类:
  • php
阅读更多

Pager.class.php 代码如下

class Pager {
    /**
     *int 总页数
     * */
    protected $pageTotal;
    /**
     *int 上一页
     * */
    protected $previous;
    /**
     *int 下一页
     * */
    protected $next;
    /**
     *int 中间页起始序号
     * */
    protected $startPage;
    /**
     *int 中间页终止序号
     * */
    protected $endPage;
    /**
     *int 记录总数
     * */
    protected $recorbTotal;
    /**
     *int 每页显示记录数
     * */
    protected $pageSize;
    /**
     *int 当前显示页
     * */
    protected $currentPage;
    /**
     *string 基url地址
     * */
    protected $baseUri;
    
    /**
     * @return string 获取基url地址
     */
    public function getBaseUri() {
        return $this->baseUri;
    }
    
    /**
     * @return int 获取当前显示页
     */
    public function getCurrentPage() {
        return $this->currentPage;
    }
    
    /**
     * @return int 获取每页显示记录数
     */
    public function getPageSize() {
        return $this->pageSize;
    }
    
    /**
     * @return int 获取记录总数
     */
    public function getRecorbTotal() {
        return $this->recorbTotal;
    }
    
    /**
     * @param string $baseUri 设置基url地址
     */
    public function setBaseUri($baseUri) {
        $this->baseUri = $baseUri;
    }
    
    /**
     * @param int $currentPage 设置当前显示页
     */
    public function setCurrentPage($currentPage) {
        $this->currentPage=$currentPage;
    }
    
    /**
     * @param int $pageSize 设置每页显示记录数
     */
    public function setPageSize($pageSize) {
        $this->pageSize = $pageSize;
    }
    
    /**
     * @param int $recorbTotal 设置获取记录总数
     */
    public function setRecorbTotal($recorbTotal) {
        $this->recorbTotal = $recorbTotal;
    }
    
    /**
     *构造函数
     * */
    public function __construct()
    {
        $this->pageTotal = 0;
        $this->previous = 0;
        $this->next = 0;
        $this->startPage = 0;
        $this->endPage = 0;
        
        $this->pageSize = 20;
        $this->currentPage = 0;
    }
    
    /**
     *分页算法
     * */
    private function arithmetic() {
        if ($this->currentPage < 1)
            $this->currentPage = 1;
        
        $this->pageTotal = floor ( $this->recorbTotal / $this->pageSize ) + ($this->recorbTotal % $this->pageSize > 0 ? 1 : 0);
        
        if ($this->currentPage > 1 && $this->currentPage > $this->pageTotal)
            header ( 'location:' . $this->baseUri . 'page=' . $this->pageTotal );
        
        $this->next = $this->currentPage + 1;
        $this->previous = $this->currentPage - 1;
        
        $this->startPage = ($this->currentPage + 5) > $this->pageTotal ? $this->pageTotal - 10 : $this->currentPage - 5;
        $this->endPage = $this->currentPage < 5 ? 11 : $this->currentPage + 5;
        
        if ($this->startPage < 1)
            $this->startPage = 1;
        
        if ($this->pageTotal < $this->endPage)
            $this->endPage = $this->pageTotal;
    }
    
    /**
     *分页样式
     * */
    protected function pageStyle() {
        $result = "共" . $this->pageTotal . "页      ";
        
        if ($this->currentPage > 1)
            $result .= "<a href=\"" . $this->baseUri . "page=1\"><font style=\"font-family:webdings\">9</font></a>  <a href=\"" . $this->baseUri . "page=$this->previous\"><font style=\"font-family:webdings\">3</font></a>";
        else
            $result .= "<font style=\"font-family:webdings\">9</font> <font style=\"font-family:webdings\">3</font>";
        
        for($i = $this->startPage; $i <= $this->endPage; $i ++) {
            if ($this->currentPage == $i)
                $result .= "  <font color=\"#ff0000\">$i</font>";
            else
                $result .= "  <a href=\"" . $this->baseUri . "page=$i\">$i</a>";
        }
        
        if ($this->currentPage != $this->pageTotal) {
            $result .= "  <a href=\"" . $this->baseUri . "page=$this->next\"><font style=\"font-family:webdings\">4</font></a>";
            $result .= "  <a href=\"" . $this->baseUri . "page=$this->pageTotal\"><font style=\"font-family:webdings\">:</font></a>";
        } else {
            $result .= " <font style=\"font-family:webdings\">4</font> <font style=\"font-family:webdings\">:</font>";
        }
        return $result;
    }
    
    /**
     *执行分页
     * */
    public function execute() {
        if ($this->baseUri != "" && $this->recorbTotal == 0)
            return "";
        $this->arithmetic();
        return $this->pageStyle ();
    }
}
调用代码(test.php 代码如下)

include_once 'Pager.class.php';
$pager=new Pager();
if (isset ( $_GET ['page'] ) && ! emptyempty ( $_GET ['page'] ))
    $pager->setCurrentPage($_GET ['page']);
else
    $pager->setCurrentPage(1);
    
$pager->setRecorbTotal(1000);
$pager->setBaseUri("test.php?");
echo $pager->execute();
 

数据库结合 mysql 通用存储过程分页 海量数据分页  就是一个完美的分页了

 

我们还可继承 Pager 类重写pageStyle方法就可以有不同的样式了. yes ok

 

分享到:
评论

相关推荐

    超强php分页打包 通用分页 万能分页 ajax分页 google分页

    本压缩包“超强php分页打包 通用分页 万能分页 ajax分页 google分页”提供了一系列的分页解决方案,包括了基本的PHP分页、通用的分页实现、以及结合AJAX技术的动态分页,旨在满足各种项目需求。下面将详细介绍这些...

    仿google分页完整代码

    总的来说,这个“仿Google分页完整代码”提供了一个基本的PHP分页实现,可以帮助开发者快速实现类似Google那样简洁高效的分页功能。在实际应用中,开发者可能需要根据项目需求进行适当的修改和优化,例如增加缓存...

    php仿谷歌百度分页源代码

    总之,这个源代码提供了一个基本的PHP分页实现,对于初学者来说是一个很好的学习资源,对于有经验的开发者来说,它则可以作为一个快速实现分页功能的基础模板,从而节省开发时间。在实际应用中,需要结合具体项目的...

    php+mysql 的数字分页 类似google的分页带有样式有例子

    php+mysql 的数字分页 类似google的分页带有样式有例子

    PHP分页类,完美版(可以植入到MVC框架中)

    默认模式是仿照百度和Google的分页样式,这种风格简洁明了,用户易于理解和操作。除此之外,还支持自定义分页样式和风格,这使得开发者可以根据项目需求自由调整,增强网站的整体设计感。 分页类的核心功能包括: ...

    php仿谷歌分页类.zip

    PHP通用分页类(仿Google样式)。本代码是用于分页用的,只需提供记录总数与每页显示数两个参数,无需指定URL,链接由程序生成。方便用于检索结果分页,表单采用GET方法提交,可保证在诸如查询之,删除之类的操作时,...

    PHP实现仿Google分页效果的分页函数

    PHP实现仿Google分页效果的分页函数,是一种在网页中常见的功能,用于将大量的数据分段显示。该函数通过分页,不仅可以提高页面的加载速度,还能改善用户的浏览体验。在实现该功能的过程中,通常需要考虑以下几个...

    php google或baidu分页代码

    在PHP编程中,分页是实现大量数据列表展示时...通过这个简单的`Pager`类,开发者可以快速实现PHP项目的分页功能,但为了满足更复杂的需求,可能需要扩展类的功能,如添加对缓存的支持、自定义样式、处理分页参数等。

    PHP超强分页类

    这个分页类采用继承的方式,允许用户自定义分页显示模式,提供了四种不同的分页样式供选择,其中默认样式类似于百度和Google的分页风格。 首先,我们来了解一下分页类的核心概念。分页类通常包括以下几个关键组成...

    PHP通用分页类page.php[仿google分页]

    (仿Google样式) ** 只需提供记录总数与每页显示数两个参数。(已附详细使用说明..) ** 无需指定URL,链接由程序生成。方便用于检索结果分页。 ** 表单采用GET方法提交,可保证在诸如查询之,删除之类的操作时,不丢失...

    php 高级 分页类 源码

    * description:超强分页类,四种分页模式,默认采用类似baidu,google的分页风格。 * 2.0增加功能:支持自定义风格,自定义样式,同时支持PHP4和PHP5, * to see detail,please visit ...

    php 分页类(个人觉得挺好)

    本篇将详细介绍一个基本的PHP分页类,它包含了分页所需的主要构造和方法,并提供了四种不同的分页模式,包括流行的谷歌分页样式。 1. **类结构与变量定义** - `$infoCount`: 存储总信息或记录数。 - `$pageCount...

    捌度出品之Google近日收录查询系统php版Build0716

    5. **stylesheets** 和 **javascripts** - CSS样式表和JavaScript文件,用于界面的样式设计和交互功能实现。 6. **database** - 可能包含SQL文件,用于创建或更新系统的数据库结构。 7. **logs** 或 **error_logs** ...

    基于PHP的谷鸽新闻搜索Googie php sp1.zip

    【描述】提到的“基于PHP的谷鸽新闻搜索Googie php sp1.zip”表明该项目可能受到了Google新闻搜索的启发,但具体实现方式和功能可能有所差异。它可能包含了一个自定义的搜索引擎算法,能够抓取、索引并分析来自多个...

    基于PHP的HonoBlog php博客系统.zip

    PHP是一种广泛使用的开源脚本语言,特别适合于Web开发,可以嵌入到HTML中,以实现动态网页内容。 【描述】该压缩包文件"基于PHP的HonoBlog php博客系统.zip"包含了构建HonoBlog博客系统的源代码和其他必要文件。...

    PHP-图床程序

    `AdSense.php`可能涉及到Google AdSense的集成,这是一个广告平台,允许网站发布商在他们的网页上展示广告,从而赚取收入。在这个图床程序中,`AdSense.php`可能用于添加、管理和显示AdSense广告代码,增加网站的...

Global site tag (gtag.js) - Google Analytics