Реализация Пагинации в PHP: Как разбивать большое количество записей на страницы

Шаг 1: Подключение к базе данных

Прежде всего, убедитесь, что вы подключены к вашей базе данных. Замените значения переменных на свои соответствующие настройки.

$host = 'localhost';
$db = 'your_database';
$user = 'your_username';
$pass = 'your_password';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

Шаг 2: Определение текущей страницы и количества записей на странице

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

Шаг 3: Выборка данных с учетом пагинации

Используем SQL-запрос для выборки данных из базы данных с учетом текущей страницы и лимита записей на странице.

$sql = "SELECT * FROM your_table LIMIT :limit OFFSET :offset";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$data = $stmt->fetchAll();

Шаг 4: Вывод данных

Выведем данные на странице:

foreach ($data as $row) {
    echo $row['column1'] . ' - ' . $row['column2'] . '<br>';
}

Шаг 5: Вывод ссылок на другие страницы

Вычислим общее количество страниц и выведем ссылки на них:

$totalPages = ceil($pdo->query("SELECT COUNT(*) FROM your_table")->fetchColumn() / $limit);

for ($i = 1; $i <= $totalPages; $i++) {
    echo "<a href='?page=$i'>$i</a> ";
}

Теперь у вас есть базовый пример реализации пагинации на PHP. Помните, что вы должны адаптировать код под свою базу данных и таблицу, заменив your_table, column1, column2 и другие значения на соответствующие ваши данные.

Приятного кодинга и улучшения пользовательского опыта на вашем веб-сайте!

Комментарии

Коментарии отсутствуют, будьте первым(ой) кто напишет под этим постом!

Написать коментарий