PHP: Пагинация в PHP
Пагинация — это процесс разбиения большого объёма данных на более мелкие части, которые могут быть отображены постранично. Это часто используется на сайтах, которые содержат много записей или элементов, чтобы упростить навигацию и улучшить производительность загрузки страниц.
# Количество записей на странице $limit = 10; # Текущая страница (если не установлена, то 1) $currentPage = isset( $_GET['page'] ) ? (int)$_GET['page'] : 1; # Вычисляем количество записей, которые нужно пропустить $offset = ( $currentPage - 1 ) * $limit; # Подключаемся к базе данных try { $pdo = new PDO( 'mysql:host=localhost;dbname=database_name', 'username', 'password' ); $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch( PDOException $e ) { die( 'Подключение не удалось: ' . $e->getMessage() ); } $sql = "SELECT * FROM `table_name` LIMIT :offset, :limit"; $query = $pdo->prepare( $sql ); $query->bindValue( ':offset', $offset, PDO::PARAM_INT ); $query->bindValue( ':limit', $limit, PDO::PARAM_INT ); try { $query->execute(); $result = $query->fetchAll(PDO::FETCH_ASSOC); } catch( PDOException $e ) { die( 'Ошибка выполнения запроса: ' . $e->getMessage() ); } foreach( $result as $row ) { # выводим данные } # Выводим ссылки на другие страницы $sql = "SELECT COUNT(*) as `total` FROM `table_name` "; $query = $pdo->prepare(); try { $query->execute(); $row = $query->fetch(PDO::FETCH_ASSOC); } catch( PDOException $e ) { die( 'Ошибка выполнения запроса: ' . $e->getMessage() ); } $totalPages = ceil( $row['total'] / $limit ); for( $i = 1; $i <= $totalPages; $i++ ) { echo '<a href="?page=' . $i . '">' . $i . '</a> '; }
Комментарии