php简单的分页原理

来源:互联网 发布:linux系统解压缩文件 编辑:程序博客网 时间:2024/04/30 17:09

      运用php来实现分页原理解析,

下边我以用户表的例子讲解下。

<?php 


//获取此时你要显示的是第几页

$page =$_GET['p']; 


$pageSize=9;//每页显示数据的个数


$showPage=5;//在页码区域要显示的个数


我的在这里显示的是5页每页显示9条数据。

$conn=mysql_connect("$mysql_server_name","$mysql_username","$mysql_password") ;


//这句的($page-1)*$pageSize 这个是你在执行sql时查询数据的起始位置,比如$qage = 1时,当前为第一页,就从第一条数据查询9条数据


$sql = "SELECT * FROM 同户表 order by 排序的字段 asc LIMIT ".($page-1)*$pageSize .",$pageSize";                   //SQL查询语句
$result=mysql_query($sql,$conn);

?>

在这里写上你的页面布局

<?php 

//得到 当前用户表里数据的总数
$total_sql="SELECT COUNT(*)FROM 用户表名";

$total_result=mysql_fetch_array(mysql_query($total_sql));
$total=$total_result[0];


//计算页数
$total_pages =ceil($total/$pageSize);
mysql_close($conn);


/**3显示数据+分页条**/

//计算偏移量
$pageoffset=($showPage-1)/2;


$page_banner="<div class='pageview' >";
//判断是否是第一页,如果是第一页的话这两个按钮可点击,否则不可点击
if($page > 1){
   $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p= 1 '' class='prev-link link' >首页</a>";
   $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page-1)."' class='prev-link link'><上一页</a>";
}
else{
     $page_banner.="<span class='prev-link link'> <a>首页</a></span>";
     $page_banner.="<span class='prev-link link'> <a><上一页</a></span>";
}

//初始化起始于结束的页码数据
$start=1;
$end = $total_pages;

/*只有在总页码数大于要展示的页码个数时才会执行为了显示页码的省略号*/

//此时如果点击在后几页,前边会显示省略号
if($total_pages >$showPage) {
    if($page >$pageoffset+1){
        $page_banner.="...";
    }


    //当页数大于2页时初始化开始与结束的页码
    if($page > $pageoffset){
      $start =$page - $pageoffset;
        $end=$total_pages > $page+$pageoffset ? $page+$pageoffset :$total_pages;
    }
    //当页码小于3时初始化开始与结束的页码
    else{
       $start=1;
       $end=$total_pages > $showPage ? $showPage : $total_pages;
    }
    if($page + $pageoffset > $total_pages){
       $start=$start-($page+$pageoffset-$end);
    }


//循环输出中间显示的页码
for($i=$start;$i<=$end;$i++){
    //定义当前页不可点击
    if($page==$i){ 
      $page_banner.="<span class ='link'>$i</span>";
  }else{  
     $page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".$i."' class='link'>$i</a>";
  }
}


//页码数大于要显示的页码数时显示省略号   点击的页码在前边时显示后边的省略号
if($total_pages>$showPage&&$total_pages>$page+$pageoffset){
   $page_banner.="...";
}
//判断是否达到最后一页是否可显示
if($page <$total_pages){
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($page+1)."' class='link next'>下一页></a>";
$page_banner.="<a href='".$_SERVER['PHP_SELF']."?p=".($total_pages)."' class='link next'>尾页</a>";
}
else{
   $page_banner.="<span class ='disable'> <a>尾页</a></span>";
     $page_banner.="<span class ='link next'> <a>下一页></a></span>";
}


$page_banner.="共{$total_pages}页";
echo $page_banner;
?>

外加css


  .pageview{width:550px; margin: 40px auto; margin-right:409px;padding: 10px 0px;}

.pageview{width:550px; margin: 50px auto;}
.pageview {padding: 12px 0;text-align: center ;line-height: 26px;}
.pageview a{text-decoration: none;}
.pageview .link {display: inline-block;padding: 0 10px;color: #fff;background-color:#7eade5;border-radius: 3px;height: 27px;margin: 0 0 2px 3px;border: 0;cursor: pointer}
.pageview .hover,.pageview a.link:hover {background-color: #00adc6  }
.pageview .nub input {width: 55px;text-align: center;font: 700 12px/25px Arial;border: 1px solid #ddd;background-color: #fff; margin: 0 5px;}
.bigtit,.bigtit .h2,.rastbox .h2 { line-height: 40px  }
.pageview span.link { background-color: #ddd;  cursor: not-allowed}

0 0