封装简单分页类的实现

封装简单分页类的实现

1,面向对象编程最重要的一点,就是提高了代码的封装和重用性,提高开发效率。

例如在一个项目中,有非常多个表,表记录非常大,需要列出表内容则需要分页,
一来减轻服务器数据库压力,二来使的页面整洁

2,思路:

分页,无非就是sql语句的limit条件,组织limit条件即可
获得了limit条件,则分页完成
最重要的是除了分页完成,是对完成分页之后的展示和操作,为了提高重用性,可以
将完成分页之后的展示和操作直接作为字符串输出。

构造sql->完成分页->输出展示

3,代码:

html

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <meta charset="utf-8"/>
</head>
<style type="text/css">
    .divs{ 
        width:800px;
        height:50px;
        background-color:red;
        margin:0 auto;
        margin-top:5px; 
    }
    #page{ 
        float:right;
    }
</style>
<body>
    <?php foreach($film_arr as $key => $val){?>
    <div class='divs'><?php echo($val['description']);?></div>
    <?php }?>
    <div id="page">
    <?php echo $page;?>
    <div>
</body>
</html>

active.php//操作过程

<?php
require "./Initialize.php";
$DBObj = new DatabaseOperate(0,0,0,0);
$PaginationObj = new Pagination;
//分页
$page_id = $_GET['page_id']?$_GET['page_id']:1;
$total = $DBObj->getOneArray('SELECT COUNT(*) as total FROM film');
$total = $total['total'];
$film_sql = "select film_id,title,description from film ".$PaginationObj->page_condition($page_id,$total);
$film_arr = $DBObj->getAllArray($film_sql);

$page = $PaginationObj->page($_GET['page_id'],$total);
require_once __ROOT_DIR__."/Html/page.html";

Initialize.php//初始化

<?php

//当前项目顶目录
$current_dir = dirname(dirname(__FILE__));
//windows和linux的目录写法统一化
if(strpos($current_dir,'\\')){ 
    $reg = "/\\\/";
    $current_dir = preg_replace($reg,"/",$current_dir);
}
define('__ROOT_DIR__',$current_dir);
//自动加载类
function __autoload($className){ 
    $file_DB = __ROOT_DIR__.'/DB/'.$className.'.class.php';
    $file_PageClass = __ROOT_DIR__.'/PageClass/'.$className.'.class.php';
    if(file_exists($file_DB)){ 
        require_once $file_DB;
    }elseif(file_exists($file_PageClass)){ 
        require_once $file_PageClass;
    }else{ 
        exit('自动加载失败,没有此类');
    }
}

Pagination.class.php//分页类

<?php
// +----------------------------------------------------------------------
// | Theme:分页类
// +----------------------------------------------------------------------
// | Introduce:分页的条件组织,前台输出
// +----------------------------------------------------------------------
// | Author: NiuShaoGang <NgauSiuKong@gmail.com>
// +----------------------------------------------------------------------
/**
 * 分页类
 * @author <NgauSiuKong@gmail.com>
 */
class Pagination 
{ 
    //每页需要列出的条数
    private $page_size = 10;
    //构造分页条件
    public function page_condition($page_id,$total)
    { 
        //过滤分页页数
        $page_max = ceil($total/$this->page_size);
        $page_id>=1 || $page_id = 1;
        $page_id<=$page_max || $page_id = $page_max;
        //写分页条件
        $offest = ($page_id-1)*$this->page_size;
        $limit = " limit ".$offest.",".$this->page_size;
        return $limit;

    }
    //提取分页显示结果
    public function page($page_id,$total)
    { 
        //过滤分页页数
        $page_max = ceil($total/$this->page_size);
        $page_id>=1 || $page_id = 1;
        $page_id<=$page_max || $page_id = $page_max;
        $prepage = $page_id-1;
        $nextpage = $page_id+1;
        $border = " | ";
        $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?page_id=';
        $url1 = "?page_id=";
        $HomePage = $page_id != 1 ?"<span><a href=".$url1."1".">HomePage</a></span>":"<span>HomePage</span>";
        $PrePage = $page_id != 1 ?"<span><a href='".$url1.$prepage."'>PrePage</a></span>":"<span>PrePage</span>";
        $input = "<input type='text' name='page_id' id='input_page_id' placeholder='".$page_id."'><button id='button'>Go</button>";
        $NextPage = $page_id != $page_max?"<span><a href='".$url1.$nextpage."'>NextPage</a></span>":"<span><a>NextPage</a></span>";
        $LastPage = $page_id != $page_max?"<span><a href='".$url1.$page_max."'>LastPage</a></span>":"<span>LastPage</span>";
        $JavaScript = "<script type='text/javascript'>
                            //点击跳页
                            var inputObj = document.getElementById('input_page_id');
                            var buttonObj = document.getElementById('button');

                            buttonObj.onclick = function(){ 
                                var input_value = inputObj.value;
                                if(!input_value){ 
                                    alert('请输入页码数值');
                                }
                                var url = window.location.href;
                                var num = url.indexOf('?',url);
                                if(num){ 
                                    url = url.substring(0,num)
                                }
                                var page_id = 'page_id='+input_value;
                                var jump_url = url+'?'+page_id;
                                window.location.href=jump_url;
                            }
                            var HomePageObj = document.getElementById('HomePage');
                       </script>";
        $page_info = $HomePage.$border.$PrePage.$border.$input.$border.$NextPage.$border.$LastPage.$JavaScript;
        return $page_info;
    }
}

注意:

由于时间因素,分页类写的比较简单,但是核心的东西是不变的

github地址:https://github.com/NgauSiuKong/NoteBook.git   此项目是NoteBook文件下pagination文件
线上测试环境: http://notebook.niushao.net/pagination
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值