Постраничный вывод на PHP
Когда-нибудь (конечно, если у вас есть сайт на PHP и MySQL) вам понадобится вывести все записи из базы данных. Ведь, например, выводить по 100 постов на одной странице крайне неразумно, поэтому следует сделать на сайте постраничный вывод записей из базы данных.
Наш постраничный вывод будет основан на свойствах оператора LIMIT
. Оператор LIMIT
позволяет не только ограничить вывод данных, но и задать параметр, с которого следует начинать вывод записей.
Например, чтобы вывести 10 записей из таблицы data
, начиная с 10-й записи, следует писать так:
SQL
SELECT * FROM data LIMIT 10, 10;
Страница нашего сценария будет называться viewpost.php. Переменная $str
будет содержать значение нужной страницы.
Данные будем выводить из таблицы data
. Структурируем вывод данных следующим образом: будем выводить краткое описание (description
) и заголовок (title
).
Конечно, для того чтобы все это выводилось приемлемо нужно будет сгруппировать элементы с помощью HTML и CSS. Хотя для моего примера все просто.
Пример простой постраничной навигации:
PHP
$sum = 5; // число записей на странице $result = mysql_query("SELECT count(*) as a from data"); //count -- считает количество элементов массива $arr = mysql_fetch_row($result); // возвращает неассоциативный массив $rec = $arr[0]; // общее число записей в таблице // если страницы не существует, выводим первую страницу if(!isset($_GET['str'])) {$str = 0;} else {$str = $_GET['str'];} // получем номер начальной записи страницы $start = $str * $sum; // запрос $r = mysql_query("SELECT * FROM data LIMIT $start, $sum"); $n = mysql_num_rows($r); // возвращаем число рядов результата запроса // если страница не первая, выводим ссылку НАЗАД if ($str > 0) { $p = $str - 1; echo "<a href=viewpost.php?str=$p>НАЗАД</a>"; } $str++; // увеличиваем переменную $str на единицу; // выводим ссылку на следующие пять записей, если она есть, // то есть число записей, которые нужно вывести, // и смещение не превышает общего числа записей if($start + $n < $rec) echo "<a href=viewpost.php?str=$str>ДАЛЕЕ</a>"; // выводим записи for ($i = 0; $i < $n; $i++) { $myrow = mysql_fetch_array($r); printf ("<h1>%s</h1><p>%s</p>", $myrow["title"], $myrow["description"] ); }
Комментарии к статье
Спасибо большое) очень простой скрипт для понимания и все очень хорошо.Спасибо что помогли)
Очень помог ваш скриптец !долго искал по инету!все замудрено а этот подошол 1 в 1!!!Огромное спасибо вот только сделали бы чтоб последняя запись выводилась в начале
Димка, Acid_Burn, всегда пожалуйста , а скрипт и в самом деле довольно прост, как раз для новичков, коим я и являюсь
Спасибо большое!Очень помог!)
Такую
"Warning: ... expects parameter 1 to be resource, boolean given"
фигню выдаёт в
"$n = mysql_num_rows($r);"
"$arr = mysql_fetch_row($result);"
Спасибо, я долго мучился, пересмотрел массу сайтов, и вот, наконец, у меня получилось
пож-то, не забудьте поправить синтаксис функций на современный лад
Подскажите, а как быть если сайт имеет категории, и нужно выводить только те записи, которые соответствуют своей категории?
марс, я давно не занимаюсь пхп, но очевидно, что запрос к БД нужно делать с фильтром по категории, чтобы выводимые записи относились к одной категории
спасибо за скрипт)