m_pagingdataarray = array();
$this->m_configuration = array();
/* 基础数据设置 */
$this->setpagingdataarray($pagingdataarray);
$this->setconfiguration($configuration );
$this->setbasisdata();
}
/* 设置数据 */
private function setpagingdataarray($pagingdataarray)
{
/* 判断配置项的数据是否为空 */
if(false == empty($pagingdataarray)) {
$this->m_pagingdataarray = $pagingdataarray;
} else {
$this->m_pagingdataarray = array();
}
}
/* 设置配置项数据 */
private function setconfiguration($configuration)
{
/* 判断配置项的数据是否为空 */
if(false == empty($configuration)) {
$this->m_configuration = $configuration;
} else {
$this->m_configuration = array();
}
}
/* 处理判断数组中是否存在某个键名 */
private function setuppase($property, $key, $content)
{
/* 判断 $key 是否在数组中存在的键名 */
if(true == array_key_exists($key, $this->m_configuration)) {
$this->$property = $this->m_configuration[$key];
} else {
$this->$property = $content;
}
}
/* 基础数据设置 */
private function setbasisdata()
{
$this->setfraction();
$this->settotal();
$this->setpage();
$this->setstarting();
$this->settotalfraction();
$this->seturl();
}
/* 设置每页显示数据的条数 */
private function setfraction()
{
$this->setuppase('m_fraction', 'traction', 15);
}
/* 设置数据的总条数 */
private function settotal()
{
$this->setuppase('m_total', 'total', 0);
}
/* 设置页面传递过来的页码值 */
private function setpage()
{
/* 判断 $key 是否在数组中存在的键名 */
if(true == array_key_exists('page', $this->m_pagingdataarray)) {
$this->m_page = max(1, (false == empty($this->m_pagingdataarray['page']) ? intval($this->m_pagingdataarray['page']) : 0));
} else {
$this->m_page = 1;
}
echo $this->m_pagingdataarray['page'];
}
/* 设置查询数据的起始值 */
private function setstarting()
{
$this->m_starting = ($this->m_page - 1) * $this->m_fraction;
}
/* 设置计算出来的总页数, 总页数 = 总条数除以每页显示的条数。*/
private function settotalfraction()
{
$this->m_totalfraction = ceil($this->m_total/$this->m_fraction);
/* 当前页数大于最大页数时,将总页数的值赋值给当前页面,防止超越操作。*/
if($this->m_totalfraction m_page) {
$this->m_page = $this->m_totalfraction;
}
}
/* 设置分页的url地址 */
private function seturl()
{
$this->setuppase('m_url', 'url', null);
}
/* 获取查询数据的起始值 */
public function getstarting()
{
return $this->m_starting;
}
/* 获取每页显示的条数值 */
public function getfraction()
{
return $this->m_fraction;
}
/* 获取url拼接,处理url拼接方法 */
public function geturlsplice()
{
$urlsplice = '?';
if(false == empty($this->m_pagingdataarray)) {
//删除当前数组中的page数据
unset($this->m_pagingdataarray['page']);
foreach($this->m_pagingdataarray as $pkey=>$pvalue) {
/* 拼接普通url */
if((false == empty($pvalue)) && (false == is_array($pvalue))) {
$urlsplice .= $pkey.'='.$pvalue.'&';
}
}
}
return $urlsplice;
}
/* 返回拼接好的html代码(包括js代码) */
public function getpaginghtmlinfo()
{
$urlsplice = $this->geturlsplice();
$pageurl = $this->m_url.$urlsplice.'page=';
$pageurls = $pageurl.($this->m_page-1);
$pageurly = $pageurl.($this->m_page+1);
$html = null;
//当数据只有一页的情况,总页数 等于 1 时
if($this->m_totalfraction == 1) {
$html .= '上一页 ';
$html .= 当前第 $this->m_page 页 ;
$html .= '下一页 ';
$html .= '共1页 ';
$html .= 共有 $this->m_total 条数据 ;
//第一页,(首页的时候,当前页码为 1 时)
} elseif($this->m_page == 1) {
$html .= '上一页 首页 ';
$html .= 当前第 $this->m_page 页 ;
$html .= 下一页 ;
$html .= 共 $this->m_totalfraction 页 ;
$html .= 共有 $this->m_total 条数据 ;
//到尾部的时候,(当前页码 等于 总行数时)
} elseif($this->m_page == $this->m_totalfraction) {
$html .= 上一页 尾部 ;
$html .= 当前第 $this->m_totalfraction 页 ;
$html .= '下一页 ';
$html .= 共 $this->m_totalfraction 页 ;
$html .= 共有 $this->m_total 条数据 ;
//正常的时候
} else {
$html .= 上一页 正常 ;
$html .= 当前第 $this->m_page 页 ;
$html .= 下一页 ;
$html .= 共 $this->m_totalfraction 页 ;
$html .= 共有 $this->m_total 条数据 ;
}
return $html;
}
}
下面来介绍用法:
$configuration = array(
'total' => 30, //总条数
'traction' => 3, //当前页面需要显示的条数
'url' => './studentmanagement', //分页按钮的url地址
);
//调用分页模块,第一个参数是将页面获取的数据传递进去,$_request全局变量,post或者get的都可以获取大。第二个参数就是上面的数组,配置参数
$pageingobj = new pagingmodel($_request, $configuration);
$this->assign('pageing', $pageingobj->getpaginghtmlinfo()); //然后就调用这个方法返回分页代码,放在页面上去就可以了
ad:真正免费,域名+虚机+企业邮箱=0元
