当前位置:首页 > PHP

php实现第几页

2026-02-16 14:26:06PHP

PHP实现分页功能

分页功能在Web开发中非常常见,特别是在展示大量数据时。PHP可以通过多种方式实现分页功能。

php实现第几页

基础分页实现

// 连接数据库
$conn = new mysqli('localhost', 'username', 'password', 'database');

// 每页显示的记录数
$records_per_page = 10;

// 获取当前页码
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start_from = ($page - 1) * $records_per_page;

// 查询数据
$query = "SELECT * FROM table_name LIMIT $start_from, $records_per_page";
$result = $conn->query($query);

// 显示数据
while ($row = $result->fetch_assoc()) {
    echo $row['column_name']."<br>";
}

// 计算总页数
$total_query = "SELECT COUNT(*) FROM table_name";
$total_result = $conn->query($total_query);
$total_rows = $total_result->fetch_row()[0];
$total_pages = ceil($total_rows / $records_per_page);

// 分页链接
for ($i = 1; $i <= $total_pages; $i++) {
    echo "<a href='?page=".$i."'>".$i."</a> ";
}

使用PDO实现分页

try {
    $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

    $records_per_page = 10;
    $page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
    $offset = ($page - 1) * $records_per_page;

    $stmt = $pdo->prepare("SELECT * FROM table_name LIMIT :offset, :limit");
    $stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
    $stmt->bindParam(':limit', $records_per_page, PDO::PARAM_INT);
    $stmt->execute();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['column_name']."<br>";
    }

    $total_stmt = $pdo->query("SELECT COUNT(*) FROM table_name");
    $total_rows = $total_stmt->fetchColumn();
    $total_pages = ceil($total_rows / $records_per_page);

    for ($i = 1; $i <= $total_pages; $i++) {
        echo "<a href='?page=".$i."'>".$i."</a> ";
    }
} catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}

使用Bootstrap美化分页

// 计算总页数后
echo '<nav aria-label="Page navigation">';
echo '<ul class="pagination">';
if ($page > 1) {
    echo '<li class="page-item"><a class="page-link" href="?page='.($page - 1).'">Previous</a></li>';
}
for ($i = 1; $i <= $total_pages; $i++) {
    $active = $i == $page ? ' active' : '';
    echo '<li class="page-item'.$active.'"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
}
if ($page < $total_pages) {
    echo '<li class="page-item"><a class="page-link" href="?page='.($page + 1).'">Next</a></li>';
}
echo '</ul>';
echo '</nav>';

分页类实现

可以创建一个独立的分页类来封装分页逻辑:

php实现第几页

class Pagination {
    private $total_records;
    private $records_per_page;
    private $current_page;

    public function __construct($total_records, $records_per_page = 10, $current_page = 1) {
        $this->total_records = $total_records;
        $this->records_per_page = $records_per_page;
        $this->current_page = $current_page;
    }

    public function getOffset() {
        return ($this->current_page - 1) * $this->records_per_page;
    }

    public function getTotalPages() {
        return ceil($this->total_records / $this->records_per_page);
    }

    public function getLinks($url = '?page=') {
        $links = '';
        $total_pages = $this->getTotalPages();

        if ($this->current_page > 1) {
            $links .= '<a href="'.$url.($this->current_page - 1).'">Previous</a> ';
        }

        for ($i = 1; $i <= $total_pages; $i++) {
            if ($i == $this->current_page) {
                $links .= '<strong>'.$i.'</strong> ';
            } else {
                $links .= '<a href="'.$url.$i.'">'.$i.'</a> ';
            }
        }

        if ($this->current_page < $total_pages) {
            $links .= '<a href="'.$url.($this->current_page + 1).'">Next</a>';
        }

        return $links;
    }
}

使用示例:

$total_records = 100; // 从数据库获取总记录数
$records_per_page = 10;
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

$pagination = new Pagination($total_records, $records_per_page, $current_page);
$offset = $pagination->getOffset();

// 使用$offset和$records_per_page查询数据
// ...

// 显示分页链接
echo $pagination->getLinks();

标签: php
分享给朋友:

相关文章

php实现树

php实现树

PHP实现树结构的方法 在PHP中实现树结构通常可以通过递归或迭代的方式完成。以下是几种常见的实现方法: 递归实现树结构 递归是处理树结构的自然方式,尤其适用于具有未知深度的树。 class Tr…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php实现即时通讯

php实现即时通讯

PHP 实现即时通讯的方案 即时通讯(IM)可以通过多种方式实现,PHP 作为服务器端语言,通常需要结合前端技术(如 WebSocket、AJAX)或第三方服务来实现实时通信。以下是几种常见的实现方式…

php搜索功能实现

php搜索功能实现

实现基本的PHP搜索功能 使用MySQL数据库和PHP实现简单的关键词搜索功能。需要确保数据库中有可供搜索的表和数据。 // 连接数据库 $conn = new mysqli('localhost'…

php 队列的实现

php 队列的实现

PHP 队列的实现方法 使用数据库实现队列 创建一个数据表存储队列任务,包含任务ID、状态、创建时间等字段。通过SQL语句实现任务的入队和出队操作。 // 入队操作 INSERT INTO queu…