php分页功能的实现,封装好的方法

分页实现:

设置当前页显示多少条数据

$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;

添加一个对 page page为当前页的页码,且$page为:

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="&nbsp"){
    $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; ?>

这样就实现了分页的效果

猜你喜欢

转载自blog.csdn.net/wry_developer/article/details/75332398