php 分页类
admin
2023-07-02 09:25:04
0次

class Page {

private $total; //数据表中总记录数

private $listRows; //每页显示行数

private $limit;

private $uri;

private $pageNum; //页数

private $config=array('header'=>"个记录", "prev"=>"上一页", "next"=>"下一页", "first"=>"首 页", "last"=>"尾 页");

private $listNum=8;

/*

* $total 

* $listRows

*/

public function __construct($total, $listRows=10, $pa=""){

$this->total=$total;

$this->listRows=$listRows;

$this->uri=$this->getUri($pa);

$this->page=!empty($_GET["page"]) ? $_GET["page"] : 1;

$this->pageNum=ceil($this->total/$this->listRows);

$this->limit=$this->setLimit();

}


private function setLimit(){

return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}";

}


private function getUri($pa){

$url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;

//echo $url;

$parse=parse_url($url);



if(isset($parse["query"])){

parse_str($parse['query'],$params);

unset($params["page"]);

$url=$parse['path'].'?'.http_build_query($params);

}


return $url;

}


function __get($args){

if($args=="limit")

return $this->limit;

else

return null;

}


private function start(){

if($this->total==0)

return 0;

else

return ($this->page-1)*$this->listRows+1;

}


private function end(){

return min($this->page*$this->listRows,$this->total);

}


private function first(){

$html ='';

if($this->page==1)

$html.='';

else

$html.="  {$this->config["first"]}  ";


return $html;

}


private function prev(){

$html ='';

if($this->page==1)

$html.='';

else

$html.="  {$this->config["prev"]}  ";


return $html;

}


private function pageList(){

$linkPage="";

$inum=floor($this->listNum/2);

for($i=$inum; $i>=1; $i--){

$page=$this->page-$i;


if($page<1)

continue;


$linkPage.=" {$page} ";


}

$linkPage.=" {$this->page} ";


for($i=1; $i<=$inum; $i++){

$page=$this->page+$i;

if($page<=$this->pageNum)

$linkPage.=" {$page} ";

else

break;

}


return $linkPage;

}


private function next(){

if($this->page==$this->pageNum)

$html='';

else

$html="  {$this->config["next"]}  ";


return $html;

}


private function last(){

if($this->page==$this->pageNum)

$html ='';

else

$html ="  {$this->config["last"]}  ";


return $html;

}


private function goPage(){

return '  '.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'">  ';

}

function fpage($display=array(0,1,2,3,4,5,6,7,8)){

$html[0]="  共有{$this->total}{$this->config["header"]}  ";

$html[1]="  每页显示".($this->end()-$this->start()+1)."条,本页{$this->start()}-{$this->end()}条  ";

$html[2]="  {$this->page}/{$this->pageNum}页  ";

$html[3]=$this->first();

$html[4]=$this->prev();

$html[5]=$this->pageList();

$html[6]=$this->next();

$html[7]=$this->last();

$html[8]=$this->goPage();

$fpage='';

foreach($display as $index){

$fpage.=$html[$index];

}


return $fpage;


}


}

?>


/*如何使用分页类

1.加载include 分页类

2.实例化对象 

3.查找类里面的构造方法 传参数 一般只传分页总数 每页显示数 第三个或者默认参数可以不管用 特别强调 分页总数是我们从数据库里查询表的数据总数 每页显示数使我们自己设定的

4.我们根据分页的limit数 一般都是成员属性 加入到我们查询的语句后面

$sql = "select * from message"; 

$sql = "select * from message {$page->limit}";

5.显示分页效果 直接输出就行

6.实例化后调用 $page->fpage();显示结果

*/

//引入分页类

public function actionpage(){

$count=Yii::app()->db->createCommand('select count(*) num from user')->queryAll();

$page = new Page($count[0]['num'],7);

        $countd=Yii::app()->db->createCommand('select * from user '.$page->limit)->queryAll();

$this->render('page',array('countd'=>$countd,'fpage'=>$page->fpage()));

}

?>

上一篇:html 日历插件

下一篇:html 瀑布流

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...