封装好的分页类

原创 2016年05月31日 11:27:51

提示:仅供参考

page.class.php

<meta charset="utf8">
<style>
	a {
		display:inline-block;
		border:1px solid #ccc;
		text-decoration:none;
		padding:5px;
		margin:20px 3px;
		color:#333;
	}
	.apage{
		background:#ccc;
	}
	.disable{
		border:1px solid #ccc;
		color:#ccc;
	}
</style>

<?php
require "mysql.class.php";
class page {
	private $total;
	private $number=10;
	private $pagecount;
	public $limit;
	private $url;
	private $page;
    function __construct($total,$number,$url) {
    	$this->total=$total;
    	$this->number=$number;
    	$this->pagecount=ceil($this->total/$this->number);
    	$this->getpage();
    	$this->url=$url;
		$this->limit="limit ".$this->setlimit();
    }
    private function getpage(){
    	$this->page=(isset($_GET['page'])&&!empty($_GET['page']))?$_GET['page']:1;
		if(preg_match('/\D/',$this->page)){
			$this->page=1;
		}
		if($this->page<=0){
			$this->page=1;
		}
		if($this->page > $this->pagecount){
			$this->page=$this->pagecount;
		}
    }
    private function setlimit(){
    	$start=($this->page-1)*$this->number;
    	return ($start.','.$this->number);
    }

    private function setnumber($num){
    	$str="";
		if($this->pagecount<=$num){
			for($i=1;$i<=$this->pagecount;$i++){
				if($this->page==$i){
					$str.= "<a href='".$this->url."?page=".$i."' class='apage'>".$i."</a>";
				}else{
					$str.= "<a href='".$this->url."?page=".$i."'>".$i."</a>";
					//echo "<a href='demo1.php?page=".$i ."&number=".$number."'>".$i."</a>";
				}
			}
		}else{
			if($this->page<=ceil($num/2)){
				for($i=1;$i<=$num;$i++){
					//给当前页加一个灰色的背景
					if($this->page==$i){
						$str.= "<a href='".$this->url."?page=".$i."' class='apage'>".$i."</a>";
					}else{
						$str.= "<a href='".$this->url."?page=".$i."'>".$i."</a>";
					}
				}
			}elseif($this->page>=$this->pagecount-floor($num/2)){
				//当前页在后3页时,能实现的效果是,点击后三页的时候,分页不会动
				for($i=$this->pagecount-$num-1;$i<=$this->pagecount;$i++){
					//给当前页加一个灰色的背景
					if($this->page==$i){
						$str.= "<a href='".$this->url."?page=".$i."' class='apage'>".$i."</a>";
					}else{
						$str.= "<a href='".$this->url."?page=".$i."'>".$i."</a>";
					}
				}
			}else{
				//将当前页放在中间页数时
				for($i=$this->page-floor($num/2);$i<=$this->page+floor($num/2);$i++){
					if($this->page==$i){
						$str.= "<a href='".$this->url."?page=".$i."' class='apage'>".$i."</a>";
					}else{
						$str.= "<a href='".$this->url."?page=".$i."'>".$i."</a>";
					}
				}
			}
		}
		return $str;
    }
    public function fpage($number=false,$num=5){
        $str="";
        if($this->page==1){
            $str.="<a href='javascript:void(0);' class='disable'>首页</a>";
            $str.="<a href='javascript:void(0);' class='disable'>上一页</a>";
        }else{
            $str.="<a href='".$this->url."?page=1'>首页</a>";
            $str.="<a href='".$this->url."?page=".($this->page-1)."'>上一页</a>";
        }
        if($number){
            $str.=$this->setnumber($num);
        }
        if($this->page==$this->pagecount){
            $str.="<a href='javascript:void(0);' class='disable'>下一页</a>";
            $str.="<a href='javascript:void(0);' class='disable'>尾页</a>";
        }else{
            $str.="<a href='".$this->url."?page=".($this->page+1)."'>下一页</a>";
            $str.="<a href='".$this->url."?page=".$this->pagecount."'>尾页</a>";
        }
        return $str;
    }
}

2.显示出来

<?php
include "libs/Smarty.class.php";
include "page.class.php";
$smarty=new Smarty();
//include "mysql.class.php";
//连接数据库
$mysql=new Mysql('127.0.0.1','root','root','1408phpe');
//查询总条数
$total=$mysql->counts("select * from exam8 ");
//$sql="select * from exam8 ";
$page=new page($total,2,'show1.php');
$sql="select * from exam8 $page->limit";
$a=$mysql->select_all($sql);
$smarty->assign('arr',$a);
$smarty->display('show1.tpl');
echo"<p align='left'>".$page->fpage(true)."</p>";


版权声明:本文为郝云原创文章,未经郝云允许不得转载。

【菜鸟学Java】3:封装一个分页类PageBean

背景介绍:         在做网上商城的项目时,有一个非常高频的功能需求,那就是做Web前端开发都知道的分页显示数据。当然要实现这个功能方法是非常多的,在我之前的做的项目接口管理系统中,使用的实现...
  • u010929604
  • u010929604
  • 2015年11月08日 21:49
  • 6805

php封装分页类+分页实例

分页类的封装如下: page.php
  • C_jian
  • C_jian
  • 2016年10月27日 13:21
  • 3293

Java数据分页通用封装

数据库分页, 从客户角度来看,主要是提供两个参数:每页数量(pageSize),当前页(currentPage)。 从后台处理来看,主要是分页查询数据库,查询总数;   我这里的封装参考eas...
  • wutbiao
  • wutbiao
  • 2012年08月30日 11:38
  • 10930

封装的一个完整的分页类

  • qq_34284638
  • qq_34284638
  • 2016年09月06日 20:16
  • 555

分页封装成类

看了兄弟连关于分页的视频以后,发现把以前写的东西封装成类然后循环利用,增加代码的可重用性是非常重要的,根据视频的指导,写出了一个关于分页的类,分享出来供以后使用,应该会大大减少以后写分页的时间,以后有...
  • dingyan954
  • dingyan954
  • 2011年11月17日 20:58
  • 852

封装分页类

class Page{ protected $total; //数据的总条数 protected $listRows; //一页显示多少条 protected $currentPage; //当...
  • u010578251
  • u010578251
  • 2015年05月26日 17:58
  • 232

封装分页类之二

  • lwc863481702
  • lwc863481702
  • 2016年09月24日 08:44
  • 107

分页封装类

  • 2012年10月20日 22:30
  • 1KB
  • 下载

非常好用的mysql类,支持分页读取,insert/update支持数组。

本来想搞个超级的建站系统的。只搞了一部分。不少代码感觉不错。分享给需要的人! 非常好用的mysql类,支持分页读取,insert/update支持数组。 $db->select(tablename);...
  • jianye112
  • jianye112
  • 2013年07月26日 21:44
  • 841

Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)

package cn.bdqn.mhouse.util; import java.util.ArrayList; import java.util.List; import cn.bdqn.mho...
  • qq_34137397
  • qq_34137397
  • 2017年03月18日 22:46
  • 1616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:封装好的分页类
举报原因:
原因补充:

(最多只允许输入30个字)