设为首页 收藏本站
查看: 955|回复: 0

[经验分享] PHP最简单的分页!

[复制链接]

尚未签到

发表于 2015-8-23 16:38:56 | 显示全部楼层 |阅读模式
  最近学习php分页,结合他人的思想总结了分页的一点经验,在这里分享一下,第一次写博客,大家交流交流!
  分页的思想可以根据mysql里的select * from mytable limit 0,10得到,这里0表示第一页开始,10表示每页10条记录。有了这个依据,接下来我们可以将0定义成$page,10定义成$pagesize,只要能正确获取这两个参数,那我们的分页就成功了。
  接下来需要定义首页,上一页,下一页,末页和所有页码这些按钮,所有页码的按钮可以通过遍历总页数获得,这里总页数可以通过下面方法获得:


DSC0000.gif DSC0001.gif View Code


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 .....}就能打印出页面数据,下面是部分示例代码:


View Code


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>&nbsp;&nbsp;<a href='/fm_missionlist.php?page=1'>首页</a></span><span>&nbsp;&nbsp;<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>&nbsp;&nbsp;<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>&nbsp;&nbsp;<a style='color:black'>".$i."</a></span>";
36                     }
37                     else //为每个页面添加链接
38                     {                        
39                         $str=$str."<span>&nbsp;&nbsp;<a href='/fm_missionlist.php?page=".$i."'>".$i."</a></span>";
40                     }
41                 }
42                 if($endtempid<$numpages)//判断前面的临时页面如果小于总页数,分页到endtempid结束,并且用...来代替末页
43                 {
44                     $str=$str."<span>&nbsp;&nbsp;<a href='/fm_missionlist.php?page=".$endtempid."'>...</a></span>";
45                 }
46                 if($page<$numpages)//当前不是最后一页,添加下一页和末页按钮
47                 {
48                     $str=$str."<span>&nbsp;&nbsp;<a href='/fm_missionlist.php?page=".($page+1)."'>下一页</a></span><span>&nbsp;&nbsp;<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>&nbsp;&nbsp;到&nbsp;&nbsp;<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             ?>
  
  这个是最后运行出的效果,最常用的显示效果:
DSC0002.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-103113-1-1.html 上篇帖子: php学习心得 下篇帖子: php基础知识【函数】(1)数组array
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表