Я думаю, что любой начинающий разработчик во время написания своего скрипта непременно встречается с проблемой постраничной навигации и вывода новостей на страницу. Я хотел бы предложить свой вариант, который я более-менее оптимизировал.
После перебора нескольких вариантов постраничной навигации были выбраны несколько как идейные точки и написан свой вариант:
Основная мозголомка была больше не над выводом номеров страниц, а над выводом самих новостей, вернее, над формулой. После пары дней формула была составлена:
проблема заключалась в составлении формулы для параметра $offset
После перебора нескольких вариантов постраничной навигации были выбраны несколько как идейные точки и написан свой вариант:
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