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

Задача: необходимо обеспечить постраничный вывод контента. То есть, например, имеется 50 статей и нужно эти статьи выводить по 10 на страницу и построить меню для оного вывода в виде "1 2 3 ..."

Соглашения о комментариях к коду:

  • "Статья" - это некий целостный блок данных (не обязательно текстовых) который и выводится по несколько штук на страницу (это могут быть статьи, новости, картинки и пр.)
  • "Страница" - это страница, на которой расположено некоторое количество "статей".

$total_articles_number = 79;   //общее количество статей
$articles_per_page=10; // количество статей на странице
//получаем количество страниц
$total_pages = ceil($total_articles_number/$articles_per_page);

// запускаем цикл - количество итераций равно количеству страниц
for ($i=0; $i<$total_pages; $i++){
// получаем значение $from (как $page_number) 
//для использования в формировании ссылки
$page_number=$i*$articles_per_page;
// если $page_number (фактически это проверка того является ли $from текущим) 
//не соответствует текущей странице,
// выводим ссылку на страницу со значением $from равным $page_number
if ($page_number!=$from) echo 
"<a href='".$PHP_SELF."?from=".$page_number."'> ".($i+1)." </a>";
// иначе просто выводим номер страницы - данная строка необязательна,
// пропустив ее вы просто получите линк на текущую страницу
else echo $i+1; 
// если page_number - текущая страница - ничего не выводим (ссылку не делаем)
}

Таким образом, на экране браузера мы получили что-то вроде "1 2 3 4 5 6 7 8", при этом URL (на моем компьютере, при выбранной третьей "странице") выглядит так: http://htmlweb.ru/ep/ep.php?from=20. Обратите внимание, на то, что странице под номером "3" соответствует значение from=20 то есть отсчет выводимых статей будет вестись в данном случае с 20-й.

Вообще, как вы уже поняли, переменная $from играет здесь ключевую роль. Она участвует в построении ссылок на каждую отдельную страницу, и самое главное - дает нам точку отсчета для вывода статей. Например указатели на статьи можно поместить в массив, с последующей выборкой и выводом в браузер по 10 статей, начиная от значения $from.

То есть еще раз иными словами: весь огород собственно и городился ради того, чтобы дать скрипту данные относительно того на какой "странице" сейчас находится посетитель и начиная с какого номера "статьи" следует вывести заданное количество этих статей на страницу - а это и есть значение переменной $from. Т.е. при $from=20 выведутся страницы с 21 по 30 (это также зависит от реализации вывода и значения переменной $articles_per_page)


.