PHP分页类,支持自定义样式,中间5页

<?php

//namespace Component;
/**
 * 2016-3-27
 * @author ankang
 */
class Page {
    private $ShowPage;
    private $CountPage;
    private $Floorp;
    private $PageUrl;
    private $PageClass;
    private $CurClass;

    /**
     * @author ankang
     * @param number $CountNum          数据总数
     * @param string $PageUrl           跳转链接
     * @param string $PageClass         <a>标签 总体样式
     * @param string $PageUrl           当前页样式
     * @param number $PageSize          每页显示的数据条数
     * @param number $ShowPage          每次显示的页数
     */
    public function __construct($CountNum, $PageUrl = NULL, $PageClass = NULL,$CurClass = NULL, $PageSize = 20, $ShowPage = 5) {
        $this->ShowPage      = $ShowPage;
        $this->CountPage         = ceil ( $CountNum / $PageSize );
        $this->Floorp            = floor ( $ShowPage / 2 ); // 偏移量
        $this->PageClass         = is_null ( $PageClass ) ? ‘‘ : $PageClass;
        $this->CurClass      = is_null ( $CurClass ) ? ‘‘ : $CurClass;

        // $ServerURL               = ( preg_match(‘/\?/i‘, $_SERVER[‘REQUEST_URI‘]))?preg_replace(‘/\&p\=[0-9]+/i‘, "", $_SERVER[‘REQUEST_URI‘]) : $_SERVER[‘REQUEST_URI‘]."?";
        // if( substr($ButURL,0,2)==‘//‘ ){
            // $ServerURL          = substr($ServerURL,1);
        // }
        // $url                 = preg_replace(‘/p=[\d]*/i‘, ‘‘, $ServerURL);
           $url                 = ‘‘;
        //推荐自己传url,不传也可以打开上面的代码自动获取
        $this->PageUrl           = is_null ( $PageUrl ) ? $url : $PageUrl;
    }

    /**
     *
     * @param number $Page
     * @param string $ShowToPage
     *          首页,上下页,尾页
     * @param string $Html  标签元素,li,p
     * @return string
     */
    public function getPage($Page = 1, $ShowToPage = true, $Html = null) {
        $StartPage          = ($Page - $this->Floorp); // 开始页码
        $EndPage            = ($Page + $this->Floorp); // 结束页码

        if ($this->CountPage < $this->ShowPage) {
            $StartPage      = 1;
            $EndPage        = $this->CountPage;
        }

        if ($StartPage < 1) {
            $StartPage      = 1;
            $EndPage        = $this->ShowPage;
        }

        if ($EndPage > $this->CountPage) {
            $StartPage      = $this->CountPage - $this->ShowPage + 1;
            $EndPage        = $this->CountPage;
        }

        $PageHtml = ‘‘;

        if (! is_null ( $Html )) {
            if ($Html == ‘li‘) {
                $Shtml = ‘<li>‘;
                $Ehtml = ‘</li>‘;
            } else {
                $Shtml = ‘<p>‘;
                $Ehtml = ‘</p>‘;
            }
        }

        if (true == $ShowToPage) {
            $PageHtml               .= "$Shtml<a href=‘{$this->PageUrl}p=1‘>« 首页</a>$Ehtml";
            $PrveUrl                 = $this->getPrve($Page);
            $PageHtml               .= "$Shtml<a href=‘{$PrveUrl}‘>« 上一页</a>$Ehtml";
        }

        for($i = $StartPage; $i <= $EndPage; $i ++) {
            if ($Page == $i) {
                $PageHtml           .= "$Shtml<a href=‘{$this->PageUrl}p={$i}‘ class=‘{$this->CurClass}‘>{$i}</a>$Ehtml";
            } else {
                $PageHtml           .= "$Shtml<a href=‘{$this->PageUrl}p={$i}‘ class=‘{$this->PageClass}‘>{$i}</a>$Ehtml";
            }
        }

        if (true == $ShowToPage) {
            $NextUrl                 = $this->getNext($Page);
            $PageHtml               .= "$Shtml<a href=‘{$NextUrl}‘>下一页 »</a>$Ehtml";
            $PageHtml               .= "$Shtml<a href=‘{$this->PageUrl}p={$this->CountPage}‘ >尾页 »</a>$Ehtml";
        }

        return $PageHtml;
    }

    public function getPrve($Page){
        if ($Page != 1) {
            $Prve                = $Page - 1;
            $PrveUrl             = "{$this->PageUrl}p={$Prve}";
        } else {
            $PrveUrl             = "{$this->PageUrl}p=1";
        }

        return $PrveUrl;
    }

    public function getNext($Page){
        if ($Page != $this->CountPage) {
            $Next                = $Page + 1;
            $NextUrl             = "{$this->PageUrl}p={$Next}";
        } else {
            $NextUrl             = "{$this->PageUrl}p={$this->CountPage}";
        }

        return $NextUrl;
    }

}

时间: 2024-11-05 18:52:00

PHP分页类,支持自定义样式,中间5页的相关文章

PHP+jQuery 长文章分页类 ( 支持 url / ajax 分页方式 )

/* ******* 环境:Apache2.2.8 ( 2.2.17 ) + PHP5.2.6 ( 5.3.3 ) + MySQL5.0.51b ( 5.5.8 ) + jQuery-1.8 ******* 其它组件:jQuery-1.8.3.min.js + Smarty 3.1.18 + TinyMCE 4.1.6 ******* Date:2014-10-20 ******* Author:小dee ******* Blog:http://www.cnblogs.com/dee0912/*

ajax分页插件 支持自定义

<style> ul, li{ list-style: none; } .div_page{ -moz-user-select:none; } .div_page li{ display: inline-block; padding: 2px 8px; border: 1px solid #ddd; margin: 0px 2px; cursor: pointer; } .active{ color: #fff; background: #428bca; } .disable{ backgro

【转】 博客园自定义样式修改标签页的icon图标

有没有发现大多数的博客园标签右上角都是一个小矿工,千篇一律没有什么特色,想不想设置一个像我一样的个性化icon图标呢? 按照以下四步你也可以实现自定义标签图标. From To 第一步:挑挑拣拣 选一张icon图标(尺寸不要太大)不然加载会很慢 如果想通过自己的图片生成favicon,可以使用这个网站: Favicon Generator. For real. 第二步:传文档 在博客园的设置界面选择文档,将你喜欢的图片上传上来 第三步:写代码 在设置中的页脚Html代码中插入以下script脚本

php分页类的二种调用方法(转载)

php分页类的二种调用方法 原文地址:http://www.xfcodes.com/php/fenye/25584.htm 导读:php分页类的二种调用用法,ajax调用php分页类,非ajax方式调用php分页类,自定义分页显示模式,允许设置是否支持AJAX分页模式. php分页类的二种调用方法 1,ajax调用php分页类: //$total,总数(int):$size,每页显示数量(int):$page,当前页(int),$url,链接(string):ajax,js函数名:$page =

一个通用分页类

1.功能 这个通用分页类实现的功能是输入页数(第几页)和每页的数目,就能获得相应的数据. 2.实现原理 分页的实现通常分为两种,一种是先把数据全查询出来再分页,一种是需要多少查询多少,这里使用第二种,所以就需要先实现在dao层能够查询一定范围内的数据,这里就实现通过id作为键值,查询一定范围内的数据的功能 dao层需要实现一个返回id在一个范围内的数据,那就在dao层的接口中添加一个这个方法: List<User> selectByRange(@Param("low") I

商品中的分页类

分页类: 共5条商品,每页显示2条 问:共几页? 答:3页,页数是整的 问:第1页显示第几条到第几条? 答:1-2条 问:第2页显示第几条到第几条? 答:3-4条. 总结: 分页原理的3个变量! 总条数 $total 每页条数 $perpage 当前页 $page 分页原理的2个公式 总页数 $cnt = ceil($total/$perpage); // 相除,向上取整. 第$page页,显示第几条到第几条? 答: 第$page页,说明前面已经跳过$page-1页,每页又是$perpage条

好用的ASP.NET 分页类 简单好用 支持 AJAX 自定义文字

在做网站没用 JS UI控件时 很实用 用法: var ps=new PageString(); /*可选参数*/ ps.SetIsEnglish = true;// 是否是英文 (默认:false) ps.SetIsShowText = true;//是否显示分页文字 (默认:true) //ps.TextFormat="" (默认值:<span class=\"pagetext\"><strong>总共</strong>:{0

php 数据分页类,可自定义多个分页样式

调用分页类的方法: // 测试分页 public function pageTestAction() { Load::load_class('getPage',DIR_BF_ROOT.'classes',0); $list = M('category')->field(array('id','catname','model'))->select(); $total = M('category')->findCount(); //总条数 $biao = isset($_GET['page'

Asp.NET MVC X.PageList.MVC 分页详解以及自定义样式

最近在研究MVC,自己做了个小项目:其中用到了分页功能,在网上找了很多相关的第三方插件,最后选择了X.PageList.MVC,插件是开源的,有利于学习所以选择了它,这并不是说其它的分页插件不好,只是个人爱好,当然,用于以后还是会说好的.^^ 首先可以看下源,在GitHub上,地址如下: X.PageList.MVC GitHub 源代码地址 初步看了一个项目比较精简,核心部分为X.PagedList.Mvc中的内容,配置文件为:PagedListRenderOptions.cs 这个插件可以完