php分页

<?php
//1.连接数据
include "connect.php";

/*-------------定义一个分页函数,主要用于生成分页按钮-----------------------------*/
function page($pages,$cur_page,$base_url){
 /*参数说明:  $pages :    总页面数
       $cur_page: 当前第几页
       $base_url:  当前的基本url例如 www.baidu.com/index.php?id=34&page=3
              取  www.baidu.com/index.php?id=34
  返回值(String类型):  一连串的页面数
 
 */
 
 //1.定义首页,上一页,下一页,尾页
 $first=1;  //首页
 $prev=$cur_page-1;
 $next=$cur_page+1;
 $last=$pages;
 if($prev==0){ $prev=1;} //如果上一页为0则改为1
 
 //2.组织分页按钮的html代码
 //2.1显示首页跟上一页的按钮
 $page_str='';
 if($cur_page>1){
  $page_str.="<a href='?page=$first'>首页</a> <a href='?page=$prev'>上一页</a>";
 }else{
  $page_str.="首页 上一页";
 }
 
 
 //2.2 显示数字----------12345--3456789------------------------------
 $page_nums=4;   //页栏显示的页面数
 //找起始页
 /*if(($cur_page-1)%$page_nums==0){
  //a.如果当前能被整除,则直接设为起始页
  $start_page=$cur_page;
  
 }else{
  //b.如果不能被整除,则用其它的方法找到起始页  8=>5   10 => 9
  
  $start_page=floor(($cur_page-1)/$page_nums)*$page_nums+1;
  
 }*/
 
 $start_page=floor(($cur_page-1)/$page_nums)*$page_nums+1-2;   //(公式)页栏起始显示的页数
 $end_page=$start_page+$page_nums+2; //页栏最后显示的页数
 for($i=$start_page;$i<=$end_page;$i++){
  
  if($i>$pages){
   //超出正常范围的页面不予显示
   continue;
  }
  if($i<1){
   $end_page++;
   //超出正常范围的页面不予显示
   continue;
  }
  //---end -------显示数字部分------------------------------
  
  
  
  
  
  //通过循环显示所有页栏该显示的页面数
  if($cur_page==$i){
   //如果是当前页则不加链接
   $page_str.=" $i";  
  }else{
   $page_str.=" <a href='?page=$i'>$i</a>";
  }

  
 }
 
 
 
 
 
 
 
 //2.3显示下一页跟尾页
 if($cur_page<$pages){
  $page_str.=" <a href='?page=$next'>下一页</a> <a href='?page=$last'>尾页</a>"; 
 }else{
  $page_str.=" 下一页 尾页";
 }

 echo $page_str;  //输入分页按钮的html
}
/*-----------end--定义一个分页函数,主要用于生成分页按钮-----------------------------*/

 

 

//1.配置参数
$pagesize=2;     //每页显示的条数

//2.当前页面
if(isset($_GET['page'])){
 $cur_page=intval( $_GET['page']);
}else{
 $cur_page=1;  //默认第一页
}

//3.获取总页面数
$rs=mysql_query('SELECT count(*) as num FROM liuyan');
$row=mysql_fetch_array($rs);
$rows=$row['num'];  //总行数
$pages=ceil($rows/$pagesize);  //进一位取整,得到总页数


//4.查出当前页面指定的数据,limit 0,20
$offset=($cur_page-1)*$pagesize;  //获取查询的起始位置
$sql="SELECT * FROM liuyan limit $offset, $pagesize";
$rs=mysql_query($sql);
$i=1*$offset;
while($row=mysql_fetch_array($rs)){
  echo '第'.$i.'条:';
  echo 'ID:'.$row['id'];
  echo '<br/>';
  echo '内容:'.$row['content'];
  echo '<br/>'; 
  echo '------------------------------------------------------------------';
  echo '<br/>'; 
  echo '<br/>'; 
  $i++;
}

//5.输出分页按钮
page($pages,$cur_page,$base_url='');
$str="&nbsp;&nbsp;当前第 $cur_page 页 共 $rows 条记录 共 $pages 页";
echo $str;

?>

 

尾页显示还有些问题只能显示3页,希望大虾们给点意见

posted @ 2012-05-30 13:42  Thinking In Code  阅读(282)  评论(0编辑  收藏  举报