Search
Write a publication
Pull to refresh

Постраничная навигация и вывод новостей в php

Я думаю, что любой начинающий разработчик во время написания своего скрипта непременно встречается с проблемой постраничной навигации и вывода новостей на страницу. Я хотел бы предложить свой вариант, который я более-менее оптимизировал.


После перебора нескольких вариантов постраничной навигации были выбраны несколько как идейные точки и написан свой вариант:

if ($page=='1' /* если страница равна 1 */| $page=='' /* или не задана */ && $pages=='1' /* и страниц всего 1 */)
{
echo('[1] ');
}
if ($page=='1' /* если страница равна 1 */| $page=='' /* или не задана */ && $pages!='1' /* и страниц больше одной*/ && $pages>='3')
{
$i='1';
while ($i<='2') /* покуда $i меньше или равно кол-ву страниц */
{
$n=$i;
echo('['.$n.'] ');
$i++;
}
if ($page!='') {echo('Вперед ');} else {echo('Вперед ');}
if ($page!=$pages /*если страница не равна кол-ву страниц всего */ ){ echo('Последняя '); }
}

if (isset($page) && $page<=$pages && $page!='1' )
{
if ($page!='1') { echo('Первая ');}
if (($page-1)>=1){ echo('Назад ');}
if ($page!='1') {$i=$page-1;} else {$i=$page;}
while ($i<=($page+1) && $i<=$pages)
{
echo('['.$i.'] ');
$i++;
}
if (($page+1)!=($pages+1)) {echo('Вперед ');}
if ($page!=$pages) {echo('Последняя ');}
}

Основная мозголомка была больше не над выводом номеров страниц, а над выводом самих новостей, вернее, над формулой. После пары дней формула была составлена:
if (!isset($page) | $page=='1') {$page=='1'; $offset='0';}
else {$offset=$page*$per_page-$per_page;}
$right_limit=$per_page;

$query="SELECT * FROM news ORDER by id DESC LIMIT ".$offset.",".$right_limit."";

проблема заключалась в составлении формулы для параметра $offset
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.