由于网站中有很多页面都要使用分页功能,因此将分页程序携程函数,在需要的时候调用能大大减少编程的工作量。
1.分页函数的设计和实现
设计函数首先要确定的是函数的输入和输出,对于分页函数来说,
输入参数:1)记录结果集的总数 $RecordCount;
2)每页显示的记录数 $PageSize;
3)当前显示哪一页$Page;
4)当前页面的URL $url;
5)查询关键字$keyword.
只要在程序中设置好这5个参数(如果没有查询关键字,可不设置$keyword),就可以调用分页函数了。该分页函数没有返回值,其主要功能是输出分页链接。
<?php /* * * @Authors peng--jun * @Email 1098325951@qq.com * @Date 2015-11-08 13:54:33 * @Link http://www.cnblogs.com/xs-yqz/ * @version $Id$ 输入参数:1)记录结果集的总数 $RecordCount; 2)每页显示的记录数 $PageSize; 3)当前显示哪一页$Page; 4)当前页面的URL $url; 5)查询关键字$keyword. ========================================== */ header("Content-type: text/html; charset=UTF-8"); function page($RecordCount,$PageSize,$Page,$url,$keyword){ $PageCount =ceil($RecordCount/$PageSize); //计算总页数 $page_previous = ($Page<=1)?1:$Page-1; //计算上一页的页数 $page_next = ($Page>=$PageCount)?$PageCount:$Page+1; //计算下一页的页数 $page_start = ($Page-5>0)?$Page-5:0; //只显示本页前5页的页码链接 $page_end = ($page_start+10<$PageCount)?$page_start+10:$PageCount;//只显示后5页的页码链接 //若超过10页,只显示本页前后5页的页码链接 //$page_start = $page_end-10; if($page_start<0) $page_start = 0;//若当前页不合法,更正 $parse_url = parse_url($url); if(empty($parse_url["query"])) $url = $url.'?'; //若不存在,在$url后添加? else $url = $url.'&'; //若存在,在$url后添加& if(empty($keyword)){ if($Page== 1) $navigator = "[首页] [上一页] "; else $navigator = " <a href='?page=1'>[首页]</a> <a href=".$url."Page= $page_previous>[上一页]</a> "; for($i=$page_start;$i<$page_end;$i++){ //输出页码链接 $j = $i+1; if ($j==$Page) $navigator = $navigator. "$j "; else $navigator = $navigator. "<a href='".$url."Page=$j'>$j</a> "; } if($Page== $PageCount) // 设置“下一页”链接 $navigator = $navigator. " [下一页] [末页]"; else $navigator = $navigator. " <a href=".$url."Page=$page_next>[下一页]</a> <a href=".$url."Page=$PageCount>[末页]</a> "; $navigator.= " 共".$RecordCount. "条记录 $Page / $PageCount 页"; }else{ //如果设置了查询关键词,则将查询关键词加到URL链接中 $keyword = $_GET["keyword"]; $navigator = "<a href=".$url."keyword=$keyword&Page=$page_previous>上一页</a> "; for($i=$page_start;$i<$page_end;$i++){ $j = $i+1; $navigator = $navigator."<a href='".$url."keyword=$keyword&Page=$j'>$j</a> "; } $navigator =$navigator."<a href=".$url."keyword=$keyword&Page=$page_next>下一页</a> "; $navigator.= " 共".$RecordCount. "条记录 $Page / $PageCount 页"; } echo $navigator; //输出分页链接 } ?>