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> ';
}
PHP 1.2 г. Просмотров: 756
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.