PHP实现分页效果2

<?php 
  header("content-type:text/html;charset=utf-8");
  //连接数据库
  require_once("conn.php");
  //定义分页可能需要的参数
  $pagesize=3; //每页显示数
  $start_row;//定义每页的首条数据在查询中的起始位置
  $pages;//总页数
  $page;//当前页

  //构建查询语句获取总记录数和计算总页数
  $sql="select * from student order by id desc";
  $result=mysql_query($sql);
  $records=mysql_num_rows($result);
  echo "总记录数:".$records;

  $page=isset($_GET['page'])?$_GET['page']:1;
  $start_row=($page-1)*$pagesize;
  $pages=ceil($records/$pagesize);
  $sql="select * from student order by id asc limit {$start_row},{$pagesize}";
  $result=mysql_query($sql);
  echo "<br>总页数:".$pages;
 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
 	<meta charset="UTF-8">
 	<title>学生管理中心</title>
 	<style>
      tr>td>a:link,tr>td>a:visited{
      	padding:5px;
        color:blue;
        text-decoration:none;
      }
     td>span{
     	color:black;
     }
     span>a{
      color:silver;
     }
 	</style>
 </head>
 <body>
    <div style='align:center;'></div>
 	<table border='1' width='500' align='center' rules='all'>
 	  <caption><h1>员工信息中心</h1></caption>
 		<tr align="center">
 			<th>编号</th>
 			<th>姓名</th>
 			<th>性别</th>
 			<th>年龄</th>
 			<th>学历</th>
 			<th>工资</th>
 			<th>奖金</th>
 			<th>籍贯</th>
 		</tr>
 		<?php 
         while($arr=mysql_fetch_assoc($result))
         {
 		 ?>
 		 <tr align="center">
 		 	<td><?php echo $arr['id'] ?></td>
 		 	<td><?php echo $arr['name'] ?></td>
 		 	<td><?php echo $arr['sex'] ?></td>
 		 	<td><?php echo $arr['age'] ?></td>
 		 	<td><?php echo $arr['edu'] ?></td>
 		 	<td><?php echo $arr['salary'] ?></td>
 		 	<td><?php echo $arr['bonus'] ?></td>
 		 	<td><?php echo $arr['city'] ?></td>
 		 </tr>
 		 <?php 
 		 } ?>
 		 <?php  
               echo "<tr align='center'>";
               echo "<td colspan='8'>";


              //如果总页数小于9页,则正常显示吧
              //只考虑第一页和最后一页的特殊情况,中间一般显示,当前页没有样式
               if($pages<=9)  
               {  
                  $start=1;
                  $next=$page+1;
                  $forward=$page-1;
                  $end=$pages;
                  if($page==1)
                  {  
                     //当前页是第1页的话,“上一页”不可用
                     echo "<span><a style='disabled'>上一页</span>";
                     for($i=1;$i<=$pages;$i++)
                      { 
                      if($i==$page) //当前页显示为无链接标记
                      {echo "<span>$i</span>";}
                      else
                       {
                        echo "<a href=?page=$i>$i</a>";//正常显示其他页面的链接
                      }
                      }
                     echo "<a href=?page=$next>下一页</a>";

                  }
                  //当前页是最终页的话,“下一页”不可用
                  elseif($page==$pages)
                   {
                     $forward=$page-1;
                     echo "<a href=?page=$forward>上一页</a>";
                     for($i=1;$i<=$pages;$i++)
                      { 
                      if($i==$page) //当前页显示为无链接标记
                      {echo "<span>$i</span>";}
                      else
                       {echo "<a href=?page=$i>$i</a>";}
                      }
                     echo "<span><a style='disabled'>下一页</span>";
                     //当前页是最后一页的话,“下一页”不可用
                    }
                  else{
                   echo "<a href=?page=$forward>上一页</a>";
                   for($i=1;$i<=$pages;$i++)
                    { 
                    if($i==$page) //当前页显示为无链接标记
                     {echo "<span>$i</span>";}
                    else
                     {echo "<a href=?page=$i>$i</a>";}
                     }
                      echo "<a href=?page=$next>下一页</a>";
                    }}
              

              //以下处理常规博客10页以上的情况
               if($pages>9)
               {
 		          //如果是当前页是第一页
               if($page==1)
               {
                //当前页是第1页的话,“上一页”不可用
                echo "<span><a style='disabled'>上一页</span>";
                $start=1;
                $next=$page+1;
                $end=$start+3;
                for($i=$start;$i<=$end;$i++)
                { 
                  if($i==1) //当前页显示为无链接标记
                  {echo "<span>$i</span>";}
                  else{
                  echo "<a href=?page=$i>$i</a>";}
                }
                echo "<span>...</span>";
                echo "<a href=?page=$pages>$pages</a>";
                echo "<a href=?page=$next>下一页</a>";
               }

               //如果当前页不是第1页且页码小于5
               if($page!=1&&$page<4)
               {
                $start=1;
                $next=$page+1;
                $end=4;  //第4页为前节点,注意哦
                $forward=$page-1;
                echo "<a href=?page=$forward>上一页</a>";
                for($i=$start;$i<=$end;$i++)
                  {
                    //如果是当前页为无链接标记
                    if($page==$i) {echo "<span>$i</span>";}
                    else
                      {echo "<a href=?page=$i>$i</a>";}
                  }
                echo "<span>...</span>";
                echo "<a href=?page=$pages>$pages</a>";
                echo "<a href=?page=$next>下一页</a>"; 
               }
               //如果当前页大于4且小于总页数-某个数(中间页码的考虑)
               if($page>=4&&$page<$pages-2)
               {
                $start=$page-1;
                $end=$page+1;
                $forward=$page-1;
                $next=$page+1;
                echo "<a href=?page=$forward>上一页</a>";
                echo "<a href=?page=1>1</a>";
                echo "<span>...</span>";
                for($i=$start;$i<=$end;$i++)
                  {
                    //如果是当前页为无链接标记
                    if($page==$i) {echo "<span>$i</span>";}
                    else
                      {echo "<a href=?page=$i>$i</a>";}
                  }
                echo "<span>...</span>";
                echo "<a href=?page=$pages>$pages</a>";
                echo "<a href=?page=$next>下一页</a>"; 
               }
              //当前页不是最后一页且为最后四页
              if($page!=$pages&&$page>=$pages-2)
               {
                 $start=$pages-3;//倒数第4页为前节点,注意哦
                 $forward=$page-1;
                 $next=$page+1;
                 $end=$pages;  
                
                echo "<a href=?page=$forward>上一页</a>";
                echo "<a href=?page=1>1</a>";
                echo "<span>...</span>";
                for($i=$start;$i<=$end;$i++)
                  {
                    //如果是当前页为无链接标记
                    if($page==$i) {echo "<span>$i</span>";}
                    else
                      {echo "<a href=?page=$i>$i</a>";}
                  }
                echo "<a href=?page=$next>下一页</a>"; 
               }
              //当前页是最后一页
               if($page==$pages)
               {
                $forward=$page-1;
                echo "<a href=?page=$forward>上一页</a>";
                echo "<a href=?page=1>1</a>";
                echo "<span>...</span>";
                $start=$page-3;
                $end=$page;
                for($i=$start;$i<=$end;$i++)
                { 
                  if($i==$page) //当前页显示为无链接标记
                  {echo "<span>$i</span>";}
                  else{
                  echo "<a href=?page=$i>$i</a>";}
                }
                //当前页是最后一页的话,“下一页”不可用
                echo "<span><a style='disabled'>下一页</span>";
               }
             }
               echo "</td>";
               echo "</tr>";
 		  ?>
 	</table>
 </body>
 </html>

效果1为:十页以上效果




十页以下效果:


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值