Пагинация — это процесс разбиения большого объёма данных на более мелкие части, которые могут быть отображены постранично. Это часто используется на сайтах, которые содержат много записей или элементов, чтобы упростить навигацию и улучшить производительность загрузки страниц.
# Количество записей на странице
$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> ';
}
Комментарии
0Нашли ошибку или хотите дополнить материал?