一个典型的PHP分页实例代码分享

复制代码 代码如下:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <html xmlns="http://www.w3.org/1999/xhtml">

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

  <title>php make page list</title>

  <style type="text/CSS">

  <!--

  .page a:link {

  color: #0000FF;

  text-decoration: none;

  }

  .page a:visited {

  text-decoration: none;

  color: #0000FF;

  }

  .page a:hover {

  text-decoration: none;

  color: #0000FF;

  }

  .page a:active {

  text-decoration: none;

  color: #0000FF;

  }

  .page{color:#0000FF;}

  -->

  </style>

  </head>

  <body>

  <table width="530" height="103" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">

  <tr>

  <th width="30" height="38" bgcolor="#E3E3E3" scope="col">ID</th>

  <th width="500" bgcolor="#E3E3E3" scope="col">文章标题</th>

  </tr>

  <?php

  /*

  * Created on 2010-4-17

  *

  * Order by Kove Wong

  */

  $link=MySQL_connect('localhost','root','haoxiazai1987');

  mysql_select_db('pagelist');

  mysql_query('set names gbk');

  $Page_size=10;

  $result=mysql_query('select * from v_char');

  $count = mysql_num_rows($result);

  $page_count = ceil($count/$Page_size);

  $init=1;

  $page_len=7;

  $max_p=$page_count;

  $pages=$page_count;

  //判断当前页码

  if(empty($_GET['page'])||$_GET['page']<0){

  $page=1;

  }else {

  $page=$_GET['page'];

  }

  $offset=$Page_size*($page-1);

  $sql="select * from v_char limit $offset,$Page_size";

  $result=mysql_query($sql,$link);

  while ($row=mysql_fetch_array($result)) {

  ?>

  <tr>

  <td bgcolor="#E0EEE0" height="25px"><div align="center">

  <?php echo $row['id']?>

  </div></td>

  <td bgcolor="#E0EEE"><div align="center">

  <?php echo $row['name']?>

  </div></td>

  </tr>

  <?php

  }

  $page_len = ($page_len%2)?$page_len:$pagelen+1;//页码个数

  $pageoffset = ($page_len-1)/2;//页码个数左右偏移量

  $key='<div class="page">';

  $key.="<span>$page/$pages</span> "; //第几页,共几页

  if($page!=1){

  $key.="<a href=\"".$_SERVER['PHP_SELF']."?page=1\">第一页</a> "; //第一页

  $key.="<a href=\"".$_SERVER['PHP_SELF']."?page=".($page-1)."\">上一页</a>"; //上一页

  }else {

  $key.="第一页 ";//第一页

  $key.="上一页"; //上一页

  }

  if($pages>$page_len){

  //如果当前页小于等于左偏移

  if($page<=$pageoffset){

  $init=1;

  $max_p = $page_len;

  }else{//如果当前页大于左偏移

  //如果当前页码右偏移超出最大分页数

  if($page+$pageoffset>=$pages+1){

  $init = $pages-$page_len+1;

  }else{

  //左右偏移都存在时的计算

  $init = $page-$pageoffset;

  $max_p = $page+$pageoffset;

  }

  }

  }

  for($i=$init;$i<=$max_p;$i++){

  if($i==$page){

  $key.=' <span>'.$i.'</span>';

  } else {

  $key.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".$i."\">".$i."</a>";

  }

  }

  if($page!=$pages){

  $key.=" <a href=\"".$_SERVER['PHP_SELF']."?page=".($page+1)."\">下一页</a> ";//下一页

  $key.="<a href=\"".$_SERVER['PHP_SELF']."?page={$pages}\">最后一页</a>"; //最后一页

  }else {

  $key.="下一页 ";//下一页

  $key.="最后一页"; //最后一页

  }

  $key.='</div>';

  ?>

  <tr>

  <td colspan="2" bgcolor="#E0EEE0"><div align="center"><?php echo $key?></div></td>

  </tr>

  </table>

  </body>

  </html>