PHP分页类

在百度里可以找到很多关于PHP分页的代码,但是个人觉得效果不是我想要的,于是就用某一份代码来自己加以修改

看代码,效果你们可以自己测试

class PageLink {
    /* 分页显示参数设置 */

    private $db_table = "";
    private $db_table_field = "";    //要显示的数据库中的字段 
    private $condition = ""; //查询条件
    private $sort = ""; //排序条件
    private $page_size = 0;        //每页显示的记录数目 
    private $link_num = 0;        //显示页码链接的数目 
    private $page = 1;        //當前页码 
    private $records = 0;        //表中记录总数 
    private $page_count = 0;    //总页数 
    private $pagestring = "";    //前后分页链接字符串 
    private $linkUrl = "";//當前頁面路徑
    private $urlPara = "";//當前頁面url參數
    private $linkUrlNum = 1;
    /*
     * 自定義分頁
     */
    private $linkFormat = "";

    /* 获取的数据 */
    private $page_data = "";    //从数据库中获取的数据, 

    //$page_data为二维数组接收 

    private $dbHelper;
    /* 变量定义部分 end */

    /* 函数定义(类方法) begin */

    function __construct() {include_once 'DBHelper/DBHelper.php';//这是数据库操作类
        $this->dbHelper = new DBHelper();
    }

    /* 
     * 设置分页信息 begin 
     * @param $db_table 表
     * @param $db_table_field 字段
     * @param $condition 條件
     * @param $sort 排序
     * @param $page_size 顯示條數
     * @param $link_num 數字鏈接數
     * @param $url 頁面路徑
     * @param $para url參數
     */
    public function set($db_table, $db_table_field, $condition, $sort, $page_size, $link_num, $url, $para) {
        $this->db_table = $db_table;        //表名 
        $this->db_table_field = $db_table_field; //字段数组, 
        $this->condition = $condition; //排序条件
        $this->sort = $sort; //排序条件 
        //将要显示的字段名称 
        //写入该数组 
        /* db参数设置 end */

        /* 分页参数设置 begin */
        $this->page_size = $page_size;        //每页显示记录的数目 
        $this->link_num = $link_num;        //显示翻页链接的数目 
        $this->linkUrl = $url;
        $this->urlPara = $para;
        /* 分页参数设置 end */
    }

    /* 设置分页信息 end */

    /* 获取分页链接数据 begin */

    public function get() {
        $page_data[0] = $this->pagestring;
        $page_data[1] = $this->page_data;
        return $page_data;
    }

    /* 获取分页链接数据 end */

    /* 页码处理 begin */

    private function set_page() {
        if (isset($_REQUEST["page"])) {
            $this->page = intval($_REQUEST["page"]);
        } else {
            $this->page = 1;
        }
    }

    /* 页码处理 end */

    /* 获取db中记录的数目 begin */

    private function get_records() {
        $this->records = $this->dbHelper->counts($this->db_table, $this->condition);
    }

    /* 获取db中记录的数目 end */

    /* 建立翻页链接字符串 begin */

    private function page_link() {
        $checkPage = intval($this->page / $this->link_num);
        $startPage = 1;
        $stopPage = 1;
        if($checkPage == 0 && $this->page < $this->link_num){
            $startPage = 1;
        }
        $linkPage = ($this->link_num / 2);
        if($this->page > $linkPage){
            $startPage = $this->page - $linkPage;
        }
        if(($startPage+$this->link_num)>$this->page_count){
            $startPage = $this->page_count - $this->link_num + 1;
        }
        if($startPage<1){
            $startPage = 1;
        }
        $stopPage = $startPage+($this->link_num - 1);
        if($stopPage> $this->page_count){
            $stopPage = $this->page_count;
        }
        $countStr = "共".$this->records."條記錄";
        $currStr = "<b>".$this->page."</b>/".$this->page_count."頁&nbsp;";
        $beginLink = "<a href='".$this->linkUrl."?page=1".$this->urlPara."'>首頁</a>";
        $preLink = "<a href='".$this->linkUrl."?page=".($this->page - 1).$this->urlPara."'>上一頁</a>";
        $nextLink = "<a href='".$this->linkUrl."?page=".($this->page + 1).$this->urlPara."'>下一頁</a>";
        $noPreLink = "<a>上一頁</a>";
        $noNextLink = "<a>下一頁</a>";
        $endLink = "<a href='".$this->linkUrl."?page=".$this->page_count.$this->urlPara."'>尾頁</a>";
        if($this->page > ($linkPage + 1) && $this->page_count > $this->link_num){
            $currPage .= "<a href='".$this->linkUrl."?page=1".$this->urlPara."'>1</a>";
        }
        for($i=$startPage;$i<=$stopPage;$i++){
            if($i == $this->page){ 
                $currPage .= "<span class='current'>".$i."</span>";
            }
            else{
                $currPage .= "<a href='".$this->linkUrl."?page=".$i.$this->urlPara."'>".$i."</a>";
            }
        }
        if(($this->page_count - $this->page) > $linkPage && $this->page_count > $this->link_num){
            $currPage .= "<span>...</span><a href='"
            .$this->linkUrl."?page=".$this->page_count.$this->urlPara."'>".$this->page_count."</a>";
        }
        $jumpPage .= "<input type='text' id='page_text_".$this->linkUrlNum.
                "' οnmοuseοver='select();' size='1' maxlength='4' οnkeyup=\"this.value=this.value.replace(/\\D+/g,'');\" />&nbsp;";
        $jumpPage .= "<input type='button' οnclick=\"window.location.href='".$this->linkUrl
                ."?page='+document.getElementById('page_text_".$this->linkUrlNum."').value+'".$this->urlPara
                ."'\" name='page_submit' value='GO' />";
        $this->linkUrlNum++;
        if(!empty($this->linkFormat)){
            $tempLinkFormat = $this->linkFormat;
            $tempLinkFormat = str_replace("總記錄", $countStr, $tempLinkFormat);
            $tempLinkFormat = str_replace("頁次", $currStr, $tempLinkFormat);
            if($this->page_count > 1){
                $tempLinkFormat = str_replace("首頁", $beginLink, $tempLinkFormat);
                if($this->page > 1){
                    $tempLinkFormat = str_replace("上一頁", $preLink, $tempLinkFormat);
                }
                else{
                    $tempLinkFormat = str_replace("上一頁", $noPreLink, $tempLinkFormat);
                }
                if($this->page < $this->page_count){
                    $tempLinkFormat = str_replace("下一頁", $nextLink, $tempLinkFormat);
                }
                else{
                    $tempLinkFormat = str_replace("下一頁", $noNextLink, $tempLinkFormat);
                }
                $tempLinkFormat = str_replace("尾頁", $endLink, $tempLinkFormat);
                $tempLinkFormat = str_replace("分頁", $currPage, $tempLinkFormat);
                $tempLinkFormat = str_replace("跳轉", $jumpPage, $tempLinkFormat);
            }
            else{
                $tempLinkFormat = str_replace("首頁", "", $tempLinkFormat);
                $tempLinkFormat = str_replace("上一頁", "", $tempLinkFormat);
                $tempLinkFormat = str_replace("下一頁", "", $tempLinkFormat);
                $tempLinkFormat = str_replace("尾頁", "", $tempLinkFormat);
                $tempLinkFormat = str_replace("分頁", "", $tempLinkFormat);
                $tempLinkFormat = str_replace("跳轉", "", $tempLinkFormat);
            }
            
        }
        $this->pagestring.=$countStr." ".$currStr;
        if($this->page_count > 1){
            $this->pagestring.=$beginLink;
            if($this->page > 1){
                $this->pagestring.=$preLink;
            }
            $this->pagestring.=$currPage;
            if($this->page < $this->page_count){
                $this->pagestring.=$nextLink;
            }
            $this->pagestring.=$endLink.$jumpPage;
        }
    }

    /* 建立翻页链接字符串 end */

    /* 获取数据 begin */

    private function fetch_data() {
        if ($this->records) {
            $limit = ($this->page - 1) * $this->page_size . ",$this->page_size";
            $this->page_data = $this->dbHelper->fetch($this->db_table, $this->condition, $this->sort, $limit);
        }
    }

    /* 获取数据 end */

    /* 建立分页 begin */

    public function create_page() {
        $this->set_page();
        $this->get_records();
        $this->page_count = ceil($this->records / $this->page_size);
        $this->page_link();
        $this->fetch_data();
    }

    /* 建立分页 end */

    function __destruct() {
        
    }

    /* 函数定义(类方法) end */
}
/* 
调用方法
include_once 'PageLink.php';
$pageLink = new PageLink(); //实例化对象
$pageLink->set("table", "*(或字段)", "条件", "排序", "数据条数", "每页链接数", "页面(list.php)", "除?page=1外的其他参数(&id=1&name=test)");//传入参数
 $pageLink->create_page();//创建分页
 $list = $pageLink->get();//获得数据
echo $list[0];    //分頁鏈接
print_r($list[1]); //打印出数据,或按你的需要循环出来
*/
 

需要的童鞋拿去用吧,根据你的需要自己修改吧

转载于:https://www.cnblogs.com/5202m/archive/2012/06/04/2535053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值