Добро пожаловать, Гость!
Постраничная навигация (new) - Полезный php код №53
Все категории
Постраничная навигация (new)
Описание: Еще один вариант постраничной навигации. Запоминает GET параметры, так же поддерживает ссылки вида ЧПУ.
Код:
<?php
function pagenation($page, $count_pages, $modrew = TRUE) {
/*
$back - ссылка НАЗАД
$forward - ссылка ВПЕРЕД
$startpage - ссылка в НАЧАЛО
$endpage - ссылка в КОНЕЦ
$page2left - вторая страница слева
$page1left - первая страница слева
$page2right - вторая страница справа
$page1right - первая страница справа
*/
$uri = '?';
if (!$modrew) {
/* Если есть параметры в адресной строке */
if ($_SERVER['QUERY_STRING']) {
unset($_GET['page']);
foreach ($_GET as $key => $value) {
$uri .= $key . '=' . $value . '&';
}
}
} else {
$url = $_SERVER['REQUEST_URI'];
$url = explode("?", $url);
if (!empty($url[1])) {
$params = explode("&", $url[1]);
foreach ($params as $param) {
if (!preg_match("#page=#", $param)) {
$uri .= $param .'&';
}
}
}
}
if ($page > 1) {
$back = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'"><</a>';
}
if ($page < $count_pages) {
$forward = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">></a>';
}
if ($page > 3) {
$startpage = '<a class="nav-link" href="'.$uri.'page=1">«</a>';
}
if ($page < ($count_pages - 2)) {
$endpage = '<a class="nav-link" href="'.$uri.'page='.$count_pages.'">»</a>';
}
if (($page - 2) > 0) {
$page2left = '<a class="nav-link" href="'.$uri.'page='.($page - 2).'">'.($page - 2).'</a>';
}
if (($page - 1) > 0) {
$page1left = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'">'.($page - 1).'</a>';
}
if (($page + 2) <= $count_pages) {
$page2right = '<a class="nav-link" href="'.$uri.'page='.($page + 2).'">'.($page + 2).'</a>';
}
if (($page + 1) <= $count_pages) {
$page1right = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">'.($page + 1).'</a>';
}
return $startpage . $back . $page2left . $page1left . '<span class="nav-active">' . $page . '</span>' . $page1right . $page2right . $forward . $endpage;
}
<strong>Пример использования:</strong>
$perpage = 10; // Записей на страницу
$count = mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM files"));
$total = $count[0]; // Всего товаров
$count_pages = ceil($total / $perpage); // Всего страниц
if (!$count_pages) { // минимум 1 страница
$count_pages = 1;
}
if (!empty($_GET['page'])) { // текущая страница
$page = abs((int)$_GET['page']);
if (!$page) {
$page = 1;
}
} else {
$page = 1;
}
if ($page > $count_pages) {
$page = $count_pages;
}
$start_pos = ($page - 1) * $perpage;
$pagenation = pagenation($page, $count_pages); // постраничная навигация
echo $pagenation, '<br />'; // Выводим
$query = "SELECT * FROM files ORDER BY id DESC LIMIT $start_pos, $perpage";
$result = mysqli_query($db, $query);
while ($row = mysqli_fetch_array($result)):
?>
<a href="files/
<?= $row['path'] ?>
"><img src="files/
<?= $row['path_mini'] ?>
" alt=""/></a><br />
<?php
endwhile;
?>
<?php
function pagenation($page, $count_pages, $modrew = TRUE) {
/*
$back - ссылка НАЗАД
$forward - ссылка ВПЕРЕД
$startpage - ссылка в НАЧАЛО
$endpage - ссылка в КОНЕЦ
$page2left - вторая страница слева
$page1left - первая страница слева
$page2right - вторая страница справа
$page1right - первая страница справа
*/
$uri = '?';
if (!$modrew) {
/* Если есть параметры в адресной строке */
if ($_SERVER['QUERY_STRING']) {
unset($_GET['page']);
foreach ($_GET as $key => $value) {
$uri .= $key . '=' . $value . '&';
}
}
} else {
$url = $_SERVER['REQUEST_URI'];
$url = explode("?", $url);
if (!empty($url[1])) {
$params = explode("&", $url[1]);
foreach ($params as $param) {
if (!preg_match("#page=#", $param)) {
$uri .= $param .'&';
}
}
}
}
if ($page > 1) {
$back = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'"><</a>';
}
if ($page < $count_pages) {
$forward = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">></a>';
}
if ($page > 3) {
$startpage = '<a class="nav-link" href="'.$uri.'page=1">«</a>';
}
if ($page < ($count_pages - 2)) {
$endpage = '<a class="nav-link" href="'.$uri.'page='.$count_pages.'">»</a>';
}
if (($page - 2) > 0) {
$page2left = '<a class="nav-link" href="'.$uri.'page='.($page - 2).'">'.($page - 2).'</a>';
}
if (($page - 1) > 0) {
$page1left = '<a class="nav-link" href="'.$uri.'page='.($page - 1).'">'.($page - 1).'</a>';
}
if (($page + 2) <= $count_pages) {
$page2right = '<a class="nav-link" href="'.$uri.'page='.($page + 2).'">'.($page + 2).'</a>';
}
if (($page + 1) <= $count_pages) {
$page1right = '<a class="nav-link" href="'.$uri.'page='.($page + 1).'">'.($page + 1).'</a>';
}
return $startpage . $back . $page2left . $page1left . '<span class="nav-active">' . $page . '</span>' . $page1right . $page2right . $forward . $endpage;
}
<strong>Пример использования:</strong>
$perpage = 10; // Записей на страницу
$count = mysqli_fetch_row(mysqli_query($db, "SELECT COUNT(*) FROM files"));
$total = $count[0]; // Всего товаров
$count_pages = ceil($total / $perpage); // Всего страниц
if (!$count_pages) { // минимум 1 страница
$count_pages = 1;
}
if (!empty($_GET['page'])) { // текущая страница
$page = abs((int)$_GET['page']);
if (!$page) {
$page = 1;
}
} else {
$page = 1;
}
if ($page > $count_pages) {
$page = $count_pages;
}
$start_pos = ($page - 1) * $perpage;
$pagenation = pagenation($page, $count_pages); // постраничная навигация
echo $pagenation, '<br />'; // Выводим
$query = "SELECT * FROM files ORDER BY id DESC LIMIT $start_pos, $perpage";
$result = mysqli_query($db, $query);
while ($row = mysqli_fetch_array($result)):
?>
<a href="files/
<?= $row['path'] ?>
"><img src="files/
<?= $row['path_mini'] ?>
" alt=""/></a><br />
<?php
endwhile;
?>
Добавил: Виджик (27 Ноября 2014)
Просмотров: (118)
Комментарии (1)
Скачать: TEXTAREA
DCMS-Social.ru - движок социальной сети, вап и веб мастерская, файло-обменник и форум.
Статистика DCMS-Social.ru: Пользователей - 14971, тем на форуме - 30292, сообщений - 298888