分页实现:
设置当前页显示多少条数据
$pageSize = (int)num; //比如2
查询出数据库中共有有多少数据:
$sql = "select * from table"
$result = mysql_query($sql);
$totalRows = mysql_num_rows($result);
计算出一共有多少页
$totalPages = ceil($totalRows/$pageSize);
ceil()方法的作用是向上取整,如ceil(1.1) = 2;
添加一个对
if($page<1 || $page==null || !is_numeric($page)){
$page = 1;
}
if($page >= $totalPages){
$page = $totalPages;
}
设置一下偏移量,偏移量就是你当前看的的页面之前所有的页面的记录数总和:
(当前页 - 1)*每个页面的数据条数,因为要查询出当前页的数据,在sql语句中使用limit确定从数组中何处查询,又查询出多少数据:
$offset = ($page -1)*$pageSize;
数据库查询出当前页的数据咯:
$sql = "select * from table limit {$offset} , {$pageSize}";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result,$result_type)){
$rows[] = $row;
}
得到$rows;
然后用foreach循环把$rows中的数据遍历出来
然后进行分页操作:
这是封装好的分页方法
function showPage($page,$totalPages,$where=null,$sep=" "){
$where =($where == null)?null:"&".$where;
$url = $_SERVER['PHP_SELF']; // 获取当前页链接
//设置首页
$index = ($page == 1) ? "首页" : "<a href='{$url}?page=1{$where}'>首页</a>";
//设置尾页
$last = ($page == $totalPages) ? "最后一页" : "<a href='{$url}?page={$totalPages}{$where}'>最后一页</a>";
//设置上一页
$prev = ($page == 1) ? "上一页" : "<a href='{$url}?page=" . ($page - 1) . "{$where}'>上一页</a>";
//设置下一页
$next = ($page == $totalPages) ? "下一页" : "<a href='{$url}?page=" . ($page + 1) . "{$where}'>下一页</a>";
$str = "总共{$totalPages}页,当前所在第{$page}页";
//生成页码
for ($i = 1; $i <= $totalPages; $i ++) {
// 当前页无连接
if ($page == $i) {
$p .= "[{$i}]";
} else {
$p .= "<a href='{$url}?page={$i}'>[{$i}]</a>";
}
}
return $str.$sep.$index.$sep.$last.$sep.$prev.$p.$sep.$next;
}
在主页面中用echo 输出showPages,前面加一个判断,当所有数据大于当前页显示数据时才使用分页:
<?php if($totalRows > $pageSize): ?>
<tr>
<td colspan="4"><?php echo showPage($page, $totalPages); ?></td>
</tr>
<?php endif; ?>
这样就实现了分页的效果