PHP分页

当某个列表的数据过多时,一般都会设置分页功能。

分页样式表

分页功能的代码

<?php

/* 
*   获取当前的网址   
*/

function get_url()
{
    // 获取当前的完整地址
    $str = $_SERVER['PHP_SELF'] . '?';

    if($_GET){
        foreach($_GET as $k => $v){
            if($k != 'page'){
                $str.= $k.'='.$v.'&';
            }
        }
    }

    return $str;

}

/**
 * 输出分页函数
 * @param $current 当前页
 * @param $count   记录总数(查询数据表的总数)
 * @param $limit   每页显示多少条
 * @param $size    显示页码
 * @param $class   样式
 */
function page($current, $count, $limit, $size, $class = 'digg')
{
    $page = '';

    // 判断是否显示分页
    if ($count > $limit) {
        // 总分页
        $pages = ceil($count / $limit);

        // 获取地址
        $url = getUrl();

        $page .= '<div class="' . $class . '">';

        // 首页 上一页
        if ($current == 1) {
            $page .= '<span class="disabled">首&nbsp;页</span>';
            $page .= '<span class="disabled">上一页</span>';
        } else {
            $page .= '<a href="' . $url . 'page=1">首&nbsp;页</a>';
            $page .= '<a href="' . $url . 'page=' . ($current - 1) . '">上一页</a>';
        }

        // 中间部分显示页码,  取的页码范围
        if ($current <= floor($size / 2)) {
            // 当前页在中间位置靠左,floor()向下取整
            $start  =  1;
            // 如果总页数大于中间显示多少页,结束数字就是中间显示多少页的数字,否则结束数字就是总页数
            $end = $pages < $size ? $pages : $size;
        } else if ($current >= $pages - floor($size / 2)) {
            // 当前页在中间位置靠右 避免页数出现0或者负数
            $start = $pages - $size + 1 <= 0 ? 1 : $pages - $size + 1;
            $end = $pages;
        } else {
            // 当前页刚好在中间位置
            $start = $current - floor($size / 2);
            $end = $current + floor($size / 2);
        }

        for ($i = $start; $i <= $end; $i++) {
            if ($i == $current) {
                $page .= '<span class="current">' . $i . '</span>';
            } else {
                $page .= '<a href="' . $url . 'page=' . $i . '">' . $i . '</a>';
            }
        }


        // 下一页 尾页
        if ($pages == $current) {
            $page .= '<span class="disabled">下一页</span>';
            $page .= '<span class="disabled">尾&nbsp;页</span>';
        } else {
            $page .= '<a href="' . $url . 'page=' . ($current + 1) . '">下一页</a>';
            $page .= '<a href="' . $url . 'page=' . $pages . '">尾&nbsp;页</a>';
        }

        $page .= '</div>';
    }

    return $page;
}

调用分页

<?php

// 引用函数库
include_once('function.php');
// 引用分页函数
include_once('page.php');

// 获取当前的页码
$page = isset($_GET['page']) ? $_GET['page'] : 1;

// 获取admin表的数据总数
$CountSql = "SELECT COUNT(*) AS C FROM pre_admin";
$count = find($CountSql);

// 每页显示多少条数据
$limit = 10;

// 每页显示多少个分页的页码数
$size = 5;

$ShowPage = page($page,$count['c'],$limit,$size);

// 偏移量 -> 索引值
$start = ($page - 1);

// 按索引值以及每页显示多少条数据去查询admin表的数据
$AdminSql = "SELECT * FROM pre_admin ORDER BY id DESC LIMIT $start,$limit";
$AdminList = all($AdminSql);

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 引用分页样式 -->
</head>
<body>
    <!-- 数据输出 -->

    <!-- 分页输出 -->
    <?php echo $ShowPage; ?>
</body>
</html>
powered by GitbookEdit Time: 2023-04-08 10:28:32