Оглавление скрыть


Вы можете авторизоваться через ВКонтакте, Фейсбук и оставить комментарий


Постраничный вывод (PHP)

Постраничный вывод информации с базы данных можно разделить на Х этапов:

  1. Определить количество записей для одной страницы;
  2. Получение количества записей в таблице;
  3. Получение количества страниц;
  4. Получение и проверка текущей страницы (обычно с GET-параметров);
  5. Формирование запроса на получение информации для конкретной страницы.

Исходные данные

Для примера была взята таблица `news` с сайта expange.ru, в которой всего 3 колонки:

ПолеТипОписание
idINTУникальный идентификатор новости
dateDATEДата публикации новости
textTEXTТекст новости

Пример

В качестве примера будет вывод по 8 записей на каждой странице, текущая страница будет браться из GET-параметра page.

Посмотреть результат выполнения скрипта.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php

// Соединение с БД MySQL
$sql mysql_connect('localhost''root''mypassword');
mysql_select_db('expange'$sql);


// Количество новостей на странице
$on_page 8;


// Получаем количество записей таблицы news
$query "SELECT COUNT(*) FROM `news`";
$res mysql_query($query);
$count_records mysql_fetch_row($res);
$count_records $count_records[0];


// Получаем количество страниц
// Делим количество записей на количество новостей на странице
// и округляем в большую сторону
$num_pages ceil($count_records $on_page);


// Текущая страница из GET-параметра page
// Если параметр не определен, то текущая страница равна 1
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// Если текущая страница меньше единицы, то страница равна 1
if ($current_page 1)
{
    
$current_page 1;
}
// Если текущая страница больше общего количества страница, то
// текущая страница равна количеству страниц
elseif ($current_page $num_pages)
{
    
$current_page $num_pages;
}


// Начать получение данных от числа (текущая страница - 1) * количество записей на странице
$start_from = ($current_page 1) * $on_page;


// Формат оператора LIMIT <ЗАПИСЬ ОТ>, <КОЛИЧЕСТВО ЗАПИСЕЙ>
$query "SELECT `id`, `date`, `text` FROM `news` ORDER BY `date` DESC LIMIT $start_from, $on_page";
$res mysql_query($query);


// Вывод результатов
echo '<table border="1"><tr><th>id</th><th>дата</th><th>текст</th></tr>';
while (
$row mysql_fetch_assoc($res))
{
    echo 
'<tr>';
    echo 
'<td>'.$row['id'].'</td>';
    echo 
'<td>'.$row['date'].'</td>';
    echo 
'<td>'.$row['text'].'</td>';
    echo 
'</tr>';
}
echo 
'</table>';


// Вывод списка страниц
echo '<p>';
for (
$page 1$page <= $num_pages$page++)
{
    if (
$page == $current_page)
    {
        echo 
'<strong>'.$page.'</strong> &nbsp;';
    }
    else
    {
        echo 
'<a href="pages.php?page='.$page.'">'.$page.'</a> &nbsp;';
    }
}
echo 
'</p>';

?>

Что получилось в итоге.

Опубликовано: 06 декабря 2011  ·  Автор: Артём Фёдоров  ·  11615 просмотров

Категория

ГлавнаяПрограммированиеPHPПостраничный вывод (PHP)

Чтобы оставить комментарий нужно авторизоваться на сайте
или войти через ВКонтакте или Фейсбук

Войти через ФейсбукВойти через Твиттер

Комментарии

Интересная статья, пригодилась. Спасибо автору
Event Chek · 340 дней назад
Интересная статья, пригодилась. Спасибо автору
Event Chek · 340 дней назад
Огромное спасибо!!! сделал на своем сайте!
только в свежих версиях надо исправить функции:
13 $query = "SELECT COUNT(*) FROM news"; убрать ковычки от `news`
14 mysql_query исправить на mysqli_query
15 mysql_fetch_row исправить на mysqli_fetch_row
53 mysql_fetch_assoc исправить на mysqli_fetch_assoc
Виталий Роенко · 1 год назад
PHP, Программирование

© 2010-2017 expange.ru
При полном или частичном копировании статей сайта, ссылка на источник обязательна.

Хотите узнать больше информации, пишите на: artem@expange.ru

Полезное онлайн  ·  Новости  ·  Изображения  ·  Статьи по датам

О проекте  ·  Правила пользования  ·  Представительства

Благодарности и пожелания