PHP最简单的分页!
最近学习php分页,结合他人的思想总结了分页的一点经验,在这里分享一下,第一次写博客,大家交流交流!
分页的思想可以根据mysql里的select * from mytable limit 0,10得到,这里0表示第一页开始,10表示每页10条记录。有了这个依据,接下来我们可以将0定义成$page,10定义成$pagesize,只要能正确获取这两个参数,那我们的分页就成功了。
接下来需要定义首页,上一页,下一页,末页和所有页码这些按钮,所有页码的按钮可以通过遍历总页数获得,这里总页数可以通过下面方法获得:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 $test=mysql_query("select count(*) as amount from mission"); 2 $s=mysql_fetch_array($test); 3 $amount=$s['amount'];//获取记录总数目 4 $numpages=ceil($amount/$pagesize);//总记录数除以每页记录数,然后利用ceil向上取整获取总页数
如果得出总页数等于1,就不需要分页直接打印出就行了。
页数大于一,若当前页在首页,就不需要首页和上一页这两个按钮,反之添加首页和上一页。
然后添加两个临时的页码起始和终止位置,这里我们页码的循环是在两个临时变量之间$starttempid,$endtempid,目的是判断是否添加...按钮,因为如果我们的页面有100多页的话不可能把所有按钮显示出来,所以在距离当前页额定数量就会带省略号。
通过循环变量$i,打印出需要显示的页码,最后再判断是否添加下一页和末页。
这样我们每次点击一个按钮都会传入正确的页码,即$page,像这样传入url:/xxx.php?page=1,然后执行sql查询select * from mytable limit $page,$pagesize,利用while($row=mysql_fetch_array($result)){echo .....}就能打印出页面数据,下面是部分示例代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?php 2 $pagesize=2;//每页显示的记录数,这里我定义每页显示2条记录 3 $test=mysql_query("select count(*) as amount from mission"); 4 $s=mysql_fetch_array($test); 5 $amount=$s['amount'];//获取记录总数目 6 $numpages=ceil($amount/$pagesize);//总记录数除以每页记录数,然后利用ceil向上取整获取总页数 7 if($numpages==1)//如果只有一页,就只打印1 8 { 9 echo "<p>1</p>"; 10 } 11 if($numpages>1)//页数大于1的情况进行分页 12 { 13 if($page>1)//判断如果当前页大于第一页,则添加首页和上一页的按钮 14 { 15 $str=$str."<span> <a href='/fm_missionlist.php?page=1'>首页</a></span><span> <a href='/fm_missionlist.php?page=".($page-1)."'>上一页</a></span>"; 16 } 17 $starttempid=1;//临时页面起始位置,默认为1 18 $endtempid=$numpages;//临时页面终止位置,默认为页面总数 19 if($page-1>5)//这里判断当前页与首页是否超过限定数目,超过则将starttempid赋当前页减去限定数目 20 { 21 $starttempid=$page-6; 22 } 23 if($numpages-$page>5)//这里判断当前页与末页是否超过限定数目,超过则将endtempid赋当前页加上限定数目 24 { 25 $endtempid=$page+6; 26 } 27 if($starttempid>1)//这里判断前面的临时页面起始位置如果大于首页,则页面分页从临时页面开始起,并且用省略号...来代替首页 28 { 29 $str=$str."<span> <a href='/fm_missionlist.php?page=".$starttempid."'>...</a></span>"; 30 } 31 for($i=$starttempid;$i<=$endtempid;$i++)//这里进行页面分页循环 32 { 33 if($i==$page)//循环到当前页,则不需要链接 34 { 35 $str=$str."<span> <a style='color:black'>".$i."</a></span>"; 36 } 37 else //为每个页面添加链接 38 { 39 $str=$str."<span> <a href='/fm_missionlist.php?page=".$i."'>".$i."</a></span>"; 40 } 41 } 42 if($endtempid<$numpages)//判断前面的临时页面如果小于总页数,分页到endtempid结束,并且用...来代替末页 43 { 44 $str=$str."<span> <a href='/fm_missionlist.php?page=".$endtempid."'>...</a></span>"; 45 } 46 if($page<$numpages)//当前不是最后一页,添加下一页和末页按钮 47 { 48 $str=$str."<span> <a href='/fm_missionlist.php?page=".($page+1)."'>下一页</a></span><span> <a href='/fm_missionlist.php?page=".$numpages."'>末页</a></span>"; 49 } 50 echo $str;//打印到文档中 51 } 52 $countcolor=true; 53 echo "<table>"; 54 $spage=$page-1;//传递分页变量,当前页-1 55 $showdata=mysql_query("select * from mission order by starttime_u DESC,id_mission limit $spage,$pagesize");//分页查询 56 while($mys=mysql_fetch_array($showdata,MYSQL_ASSOC))//循环打印出信息,接下来就是格式化打印出信息 57 { 58 59 if($countcolor==true) 60 { 61 echo "<tr><td style='background-color:#ffffff'>"; 62 $countcolor=false; 63 } 64 else 65 { 66 echo "<tr><td style='background-color:#EAF2D3'>"; 67 $countcolor=true; 68 } 69 echo "<hr/>"; 70 if($_COOKIE['m']=="admin") 71 { 72 echo "<div><a href='/fm_deletejump.php?id_mission=".$mys['id_mission']."'>删除任务</a></div>"; 73 } 74 else 75 { 76 //echo "<div style='{display:none}'>".$mys['id_mission']."</div>"; 77 } 78 echo "<div id='headinfo'><span>".$mys['starttime_u']."</span> 到 <span>".$mys['endtime_u']."</span></div>"; 79 echo "<div id='allcontent'>"; 80 echo "<div id='navsecond'><ul><li><a style='font-weight:bold;color:#8000000'>申请人</a>:".$mys['person_u']."</li><li><a style='font-weight:bold;color:#8000000'>车辆</a>:".$mys['car_u']."</li><li><a style='font-weight:bold;color:#8000000'>司机</a>:".$mys['driver_u']."</li>"; 81 echo "</ul></div>"; 82 echo "<div id='maincontent'><a style='font-weight:bold;color:#8000000'>详细内容</a>:".$mys['content_u']; 83 echo "</div>"; 84 echo "</div>"; 85 echo "</td></tr>"; 86 } 87 echo "</table>"; 88 ?>
这个是最后运行出的效果,最常用的显示效果: