需要用到sprinf,可参考sprintf官方操作手册,可以防止sql注入
1、封装的分页函数
/**
* @param int $page 当前页码
* @param int $total 总页数
* @param string $format 链接模板
* @param int $visible 可见页码数量(可选参数,默认为5)
* @return void
* @example 分页函数
* <?php x_pagination(2,10,'/list.php?page=%d',5);?>
*/
function x_pagination($page,$total,$format,$visible=5){
//计算起始页码
//当前页左侧有几个页码数,如果一共5个,则左边是2个,右边是两个
$left=floor($visible/2);
//开始页码
$begin=$page-$left;
//确保开始不能小于1
$begin=$begin<1?1:$begin;
//结束页码
$end=$begin+$visible-1;
//确保结束不能大于最大值$total
$end=$end>$total?$total:$end;
//如果$end变了,$begin也要跟着一起变
$begin=$end-$visible+1;
//确保开始不能小于1
$begin=$begin<1?1:$begin;
//显示上一页
if($page-1>0){
printf('<li><a href="%s">«</a></li>',sprintf($format,$page-1));
}
//显示省略号
if($begin>1){
print('<li class="disabled"><span>...</span></li>');
}
//数字页码
for($i=$begin;$i<=$end;$i++){
//经过以上计算$i的类型可能是float类型,所以此处用==比较合适
$activeClass=$i==$page?' class="active"':'';
printf('<li><a href="%s">%d</a></li>',$activeClass,sprintf($format,$i));
}
//显示省略号
if($end<$begin){
print('<li class="disabled"><span>...</span></li>');
}
//显示下一页
if($page+1<=$total){
printf('<li><a href="%s">»</a></li>',sprintf($format,$page+1));
}
}
2、php页面调用:
//引入php文件
require_once '../functions.php';
<ul class="pagination pagination-sm pull-right">
<?php xiu_pagination($page,$total_pages,'?page=%d'.$query);?>
</ul>