Постраничная навигация в php
Задача сделать постраничную навигацию, к примеру есть таблица со статьями, из нее нужно выводить на страницу N статей, а остальные выводить на другой странице и т.д.
К примеру файл подключения к базе:
connect.php
<?php
$db = new mysqli("localhost" , "user" , "password" , "database" , "3306" );
$db->set_charset("utf8");
if(mysqli_connect_errno()){
echo 'Не удалось установить соединение с базой данных. Повторите попытку позже.';
exit;
}
?>
Файл с параметрами постраничной навигации navigation.php:
<?
$num = 6;
$page = $_GET['page'];
//Считаем общее количество статей
$querysum = "SELECT COUNT(*) FROM articles where articles.id=\"".$RubricID."\"";
$result00 = $db->query($querysum);
$temp = $result00->fetch_array(MYSQLI_NUM);
$posts = $temp[0];
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
$page = intval($page);
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;
?>
Файл с выводом навигации echo_navigation.php:
<?
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = "<a href=rubric.php?id=$RubricID&page=1>First</a> | <a href=rubric.php?id=$RubricID&page=". ($page - 1) .">Prev</a> | ";
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = " | <a href=rubric.php?id=$RubricID&page=". ($page + 1) .">Next</a> | <a href=rubric.php?id=$RubricID&page=" .$total. ">Last</a>";
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = " <a href=rubric.php?id=$RubricID&page=". ($page - 5) .">". ($page - 5) ."</a> | ";
if($page - 4 > 0) $page4left = " <a href=rubric.php?id=$RubricID&page=". ($page - 4) .">". ($page - 4) ."</a> | ";
if($page - 3 > 0) $page3left = " <a href=rubric.php?id=$RubricID&page=". ($page - 3) .">". ($page - 3) ."</a> | ";
if($page - 2 > 0) $page2left = " <a href=rubric.php?id=$RubricID&page=". ($page - 2) .">". ($page - 2) ."</a> | ";
if($page - 1 > 0) $page1left = " <a href=rubric.php?id=$RubricID&page=". ($page - 1) .">". ($page - 1) ."</a> | ";
if($page + 5 <= $total) $page5right = " | <a href=rubric.php?id=$RubricID&page=". ($page + 5) .">". ($page + 5) ."</a>";
if($page + 4 <= $total) $page4right = " | <a href=rubric.php?id=$RubricID&page=". ($page + 4) .">". ($page + 4) ."</a>";
if($page + 3 <= $total) $page3right = " | <a href=rubric.php?id=$RubricID&page=". ($page + 3) .">". ($page + 3) ."</a>";
if($page + 2 <= $total) $page2right = " | <a href=rubric.php?id=$RubricID&page=". ($page + 2) .">". ($page + 2) ."</a>";
if($page + 1 <= $total) $page1right = " | <a href=rubric.php?id=$RubricID&page=". ($page + 1) .">". ($page + 1) ."</a>";
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>
И страница, на которой мы выводим статьи и навигацию под ней(в моем примере вывод статей осуществляется с выводом по рубрикам ):
$RubricID = $_GET['id'];
$PageID = $_GET['page'];
include("connect.php");
//Настройки постраничной навигации
include("navigation.php");
//Выбираем сами статьи
$query ="select description,article from articles where articles.id=\"".$RubricID."\" ORDER BY idrubric LIMIT $start, $num";
$result = $db->query($query);
$num_results = $result->num_rows;
//Вывод списка статей из выбранной категории
echo "<td id=\"center\"><b>Выбери статью</b><hr>";
for ($i=0; $i < $num_results; $i++){
$row = $result->fetch_assoc();
$article = $row['article'];
$desc = $row['description'];
}
//Вывод постраничной навигации
include("echo_navigation.php");
echo "</td></tr></table>";
Комментарии пользователей
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!