一、从a页点击在b页进行分页显示
二、分页显示的代码
三、有首页 上页 1 2 3 4 5 下页 末页的功能
四、翻页后能正常显示内容就是点击上页下页能正常显示数据库的数据(a页传来的参数不丢失),

解决方案 »

  1.   

    class page{
    private $_page_num;//总页数
    private $_page_size=10;//每页条数
    private $_page_url;//url链接
    private $_limit;//limit1
    private $_page_total;//总分页数
    private $_page;//分页所传分页值
    private $_list_size=10;//这为第二种分页方法显示条数
    private $_page_sort=3;//分页两边距离
    public function __construct($_total,$_pagesize,$_list_size){
    $this->_page_size=$_pagesize;
    $this->_page_total=$_total;
    $this->_list_size = $_list_size;
    $this->_page_num = round($this->_page_total/$this->_page_size);
    $this->_page=$this->getnum();
    $this->_limit="limit".$this->_page*$this->_page_size.",".$this->_page_total=$_total;
    $this->_page_url=$this->seturl();
    }
    /**
     * 获取当前页数
     * Enter description here ...
     */
    private function getnum(){
    if(isset($_GET['page'])){
    if(is_numeric($_GET['page'])){
    if($_GET['page']>0){
    if(ceil($_GET['page'])>=1 && ceil($_GET['page'])<=$this->_page_num){
    return ceil($_GET['page']);
    }elseif(ceil($_GET['page'])>$this->_page_num){
    return $this->_page_num;
    }
    }else{
    return 1;
    }
    }else{
    return 1;
    }
    }else{
    return 1;
    }
    }
    /**
     * 转换链接
     * Enter description here ...
     */
    private function seturl(){
    $_url=$_SERVER['REQUEST_URI'];//获取请求地址
    $_par=parse_url($_url);//解析url
    if(isset($_par['query'])){//判断是否存在aa=bb这种格式
    $_url=parse_str($_par['query'],$_query);//重构url
    unset($_query['page']);
    $_url=$_par['path'].'?'.http_build_query($_query);
    }else{
    $_url=$_url.'?';
    }
    return $_url;
    }

    public function limit(){
    return $this->_limit;
    }

    public function pagenum(){
    return $this->_page_num;
    }

    /*
    public function page(){
    return $this->_page;
    }
    public function pageurl(){
    return $this->_page_url;
    }
    */

    private function first(){
    return "<a href=".$this->_page_url."&page=1>首页</a>";
    }
    private function end(){
    return "<a href=".$this->_page_url."&page=".$this->_page_num.">尾页</a>";
    }
    private function prev(){
    if($this->_page>1){
    return "<a href=".$this->_page_url."&page=".($this->_page-1).">上一页</a>";
    }else{
    return '上一页';
    }
    }
    public function next(){
    if($this->_page<$this->_page_num){
    return "<a href=".$this->_page_url."&page=".($this->_page+1).">下一页</a>";
    }else{
    return '下一页';
    }
    }
    private function pagelist_1(){
    $_page='';
    for($i=1;$i<=$this->_page_num;$i++){
     $_page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>";
    }
    return $_page;
    }
    private function pagelist_2(){
    $_page='';
    $_page_start=floor($this->_page/$this->_list_size);
    $usenum=$this->check(($_page_start*$this->_list_size+10),$this->_page_num);
    for($i=$_page_start*$this->_list_size+1;$i<=$usenum;$i++){
    $_page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>";
    }
    return $_page;
    }
    private function pagelist_3(){
    $page='';
    for($i=$this->_page-$this->_page_sort;$i<=$this->_page-1;$i++){
    if($i<1)continue;
    $page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>".' ';
    }
    $page.="<a href=".$this->_page_url."&page=".$this->_page.">".$this->_page."</a>".' ';
    for($i=$this->_page+1;$i<=$this->_page+$this->_page_sort;$i++){
    if($i>$this->_page_num)break;
    $page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>".' ';
    }
    return $page;
    }
    /**
     * 没有修正的分页列表
     * Enter description here ...
     */
    private function pagelist_4(){
    $page='';
    for($i=$this->_page-$this->_page_sort;$i<=$this->_page-1;$i++){
    if($i<1)continue;
    $page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>".' ';
    }
    $page.="<a href=".$this->_page_url."&page=".$this->_page.">".$this->_page."</a>".' ';
    for($i=$this->_page+1;$i<=$this->_page+$this->_page_sort;$i++){
    if($i>$this->_page_num)break;
    $page.="<a href=".$this->_page_url."&page=".$i.">".$i."</a>".' ';
    }
    //+1和-1为了排除上一页显示的值,不然会重复
    if($this->_page>($this->_page_sort+1) && $this->_page<($this->_page_num-$this->_page_sort)){
    $page="<a href=".$this->_page_url."&page=".($this->_page-$this->_page_sort*2-1).">...</a>".$page."<a href=".$this->_page_url."&page=".($this->_page+$this->_page_sort*2+1).">...</a>";
    }
    return $page;
    }
    private function check($num1,$num2){
    if($num1>$num2){
    return $num2;
    }else{
    return $num1;
    }
    }
    public function showpage($_type){
    $_page='';
    $_page.=$this->first();//首页
    switch($_type){
    case '1':
    $_page.=$this->pagelist_1();//原始页面列表
    break;
    case '2':
    $_page.=$this->pagelist_2();//原始页面列表
    break;
    case '3':
    $_page.=$this->pagelist_3();//原始页面列表
    break;
    case '4':
    $_page.=$this->pagelist_4();//原始页面列表
    break;
    default:
    $_page.=$this->pagelist_3();//默认原始页面列表
    }
    $_page.=$this->end();//尾页
    $_page.=$this->prev();//上一页
    $_page.=$this->next();//下一页
    return $_page;
    }
    }
    // $page = new page(220,10,10);
    // echo $page->showpage('4');
    这个好像可以用