PHP二级分页,带多种分页方式的php分页类

这是一个PHP自定义分页类的实现,用于在网页中展示数据时进行分页。类包含记录总数、每页显示数、当前页数、总页数等属性,并提供了分页统计信息、字符分页和数字分页的格式,以及跳转页的选择功能。通过这个类,开发者可以方便地在PHP项目中实现灵活的分页效果。
摘要由CSDN通过智能技术生成

Class PAGE {

//类开始

/********************************************************

* $total 记录总数

* $pageNum 每页显示的条数

* $url = '' 链接

* $page->StartPage(显示分类统计,字符分类/数字分页,跳转);

* $page->StartPage(true/false, true/false, true/false);

* site http://bbs.it-home.org

*********************************************************/

private $total; //记录总数

private $pageNum; //每页显示数

private $page; //当前页数

private $pages; //总的页数

private $url; //页面url

private $Aque; //URL参数

/* 构造函数 */

public function PAGE($total, $pageNum, $url='?'){

$this->total = $total; //总记录数.

$this->pageNum = $pageNum; //每页显示数.

$this->url = $this->StrSift($url); //判断$url的值是否合法.

$this->Aque = $_GET; //页面原来所传递参数.

$this->page = $this->StrSift($_GET['page']); //当前页面GET(全局变量)方式参数,当前页码.

$this->page = is_numeric($this->page) ? $this->page : 1; //当前页码不为数字时,则把其设为1.

$this->pages = ceil($total/$pageNum); //总页数.

if($this->page<1) $this->page = 1; //当页码小于1时,则把其设为1.

//if($this->page>$this->pages) $this->page = $this->pages; //当页码大于最大页码时,则把其设为最大页码.

}

/******************

* 分页方法

*******************/

function StartPage($str, $view=true, $jump=true){

if($view==true) $PageStr .= $this->GetCount(); //分页统计信息

if($str=='str') $PageStr .= $this->GetPageStr(); //选择字符分页形式

else $PageStr .= $this->GetPageNum(); //选择数字分页形式

if($jump==true) $PageStr .= $this->JumpSelect(); //跳转

return $PageStr;

}

/**********************************************

* 显示统计信息. 格式:共5条记录 页:2/3

***********************************************/

function GetCount(){

$CountStr = "共". $this->total ."条记录 页:".$this->page."/".$this->pages." ";

return $CountStr;

}

/***********************************************

* 分页格式形一:第一页 上一页 下一页 末 页

************************************************/

function GetPageStr(){

$url = $this->url; //获取URL

//对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.

foreach($this->Aque as $key => $val){

switch($key){

case "page":

$Next = $val + 1;

$Prev = $val - 1;

break;

default:

$Sque .= "&$key=".$this->StrSift($val);

}

}

if($Next==0) $Next=2;

//首 页 上一页

switch($this->page){

case $this->page<=1:

$pagestr .= "首 页 ";

$pagestr .= "上一页 ";

break;

default:

$pagestr .= "首 页 ";

$pagestr .= "上一页 ";

}

//下一页 末 页

switch($this->page){

case $this->page>=$this->pages:

$pagestr .= "下一页 ";

$pagestr .= "末 页 ";

break;

default:

$pagestr .= "下一页 ";

$pagestr .= "pages$Sque'>末 页 ";

}

//返回分页字符串.

return $pagestr;

}

/***********************************************************

* 分页格式形如:共4307条记录 页:1/72 1 2 3 4 5 6 7 8 9 10

************************************************************/

function GetPageNum(){

$url = $this->url;

//对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.

foreach($this->Aque as $key => $val){

switch($key){

case $key!="page":

$Sque .= "&$key=".$this->StrSift($val);

}

}

switch($this->pages){

//总页数大于12页:

case $this->pages>12:

//分页数字前:< <<

switch($this->page){

case $this->page>1:

$pagestr .= "< ";

$pagestr .= "page-1).$Sque."'><< ";

break;

default:

$pagestr .= "< ";

$pagestr .= "<< ";

}

//分页数字:1 2 3 4 5 6 当前页码左边6个分页链接,右边6个分页链接.

for($i=$this->page-6; $i<=$this->page+6; $i++){

if($i>$this->pages) break;

if($i==$this->page) $pagestr .= $i." ";

elseif($i>=1) $pagestr .= "$i ";

}

//分页数字后: > >>

switch($this->page){

case $this->pagepages:

$pagestr .= "page+1).$Sque."'>>> ";

$pagestr .= "pages.$Sque."'>> ";

break;

default:

$pagestr .= "> ";

$pagestr .= ">> ";

}

break;

default:

//总页数小于12页:

for($i=1; $i<=$this->pages; $i++){

switch($i){

case $i==$this->page:

$pagestr .= $i." ";

break;

default:

$pagestr .= "$i ";

}

}

}

//返回分页字符串.

return $pagestr;

}

/************************

* 定义跳转页. BEGIN

*************************/

function JumpSelect(){

$url = $this->url;

//对URL参数进行处理:数组的键是URL变量,数组的值是URL变量的值.

foreach($this->Aque as $key => $val){

if($key != "page") $Sque .= "&$key=".$this->StrSift($val);

}

$SelectStr = "\n$SelectStr .= "onChange=\"window.location='".$url."?page='+this.value+'".$Sque."'\">\n";

for($i=1; $i<=$this->pages; $i++){

if($i == $this->page) $selected = " selected";

else $selected = "";

$SelectStr .= "$i\n";

}

$SelectStr .= "\n";

//返回分页字符串.

return $SelectStr;

}

/**********************************

* 过滤特殊字符.

***********************************/

private function StrSift($str){

$str = str_replace("\"","",$str);

$str = str_replace("'","",$str);

$str = str_replace("[url=file://%22,%22%22,$str/]\\","",$str[/url]);

$str = str_replace("\/","",$str);

$str = str_replace(":","",$str);

$str = str_replace("?","",$str); //去除会出现"??".

$str = str_replace(">","",$str);

$str = str_replace(" $str = str_replace("%","",$str);

$str = str_replace("*","",$str);

$str = str_replace("&","",$str);

$str = str_replace(".","",$str);

return $str;

}

//类结束

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值