Все, чем интересуются wap мастера.
Рекомендуем хорошую wap баннерную сеть
Обзор китайских товаров
Хороший и качественный хостинг, VDS, VPS, Dedicated с поддержкой
Функция постраничной навигации (php+MySQL).
Ни для кого не секрет, что хорошая постраничная навигация на форумах, да и на остальных ресурсах, должна быть максимально удобной… Всяких функций и классов для постраничной навигации в тырнете валом. Но я решил повелосипедить и сделать свою функцию постраничной навигации для сайта. Написал данную функцию я не для того, что бы потешить свое самолюбие, а по тому, что ни 1 из найденных мной функций навигации по страницам не отвечала моим требованиям. Мне нужно было расширенную навигацию, а не только вперед и назад. Также, желательно, что бы была возможность указания ссылок при вызове функции, иногда вещь незаменимая. Убив немного своего времени, я состряпал полностью работающую функцию.
Начну с самой функции:
function navigation($allpage,$query,$flp,$expanded)
{
// {p} в $query заменяется на номер страницы, пример index.php?p={p}
// $flp - вывод первой и последней страницы
// $expanded - расширенная навигация
$this_page = (isset($_GET['p'])) ? intval($_GET['p']) : 1 ;
if($this_page < 1 || $this_page > $allpage)$this_page = 1;
$prev_page = $this_page-1;
$pprev_page = $this_page-2;
$next_page = $this_page+1;
$nnext_page = $this_page+2;
$var = "
<div>
Страницы: ";
// Первая страница
if($this_page>2 && $flp == 1) $var .= "<a href='".str_replace('{p}',1,$query)."'>1</a> ... ";
// Пред предыдущая страница
if($pprev_page > 1 && $expanded == 1) $var .= "<a href='".str_replace('{p}',$pprev_page,$query)."'>$pprev_page</a> ";
// Предыдущая страница
$var .= ($prev_page < 1) ? "" : "<a href='".str_replace('{p}',$prev_page,$query)."'>$prev_page</a> ";
// Наша позиция
$var .= "<strong>$this_page</strong>";
// Следующая страница
$var .= ($next_page > $allpage) ? "" : " <a href='".str_replace('{p}',$next_page,$query)."'>$next_page</a>";
// Следующая за следующей страница
if($nnext_page < $allpage && $expanded == 1) $var .= " <a href='".str_replace('{p}',$nnext_page,$query)."'>$nnext_page</a>";
//Последняя страница
if($this_page<$allpage-1 && $flp == 1) $var .= " ... <a href='".str_replace('{p}',$allpage,$query)."'>$allpage</a>";
$var .= "</div>
";
echo $var;
}
А сейчас немного расскажу, что к чему в этой функции:
- $allpage – передаем в функцию количество страниц
- $query – передаем в функцию ссылку на следующие страницы.
- $flp – включение/выключение вывода первой и последней страницы.
- $expanded – включение/выключение расширенного режима навигации.
Разберемся немного подробнее с данными, которые будем передавать в функцию. С переменной $allpage думаю не должно возникнуть каких-либо проблем, там мы передаем количество всех страниц. В переменной $query мы будем передавать ссылку на следующие страницы. Таким образом мы можем огласить 1 раз функцию, а использовать несколько раз. Особенно полезной будет данная вещь при использовании мод реврайта, например, ссылка site.ru/cat/5/view должна вести на 5 страницу, тогда мы передаем в функцию в параметре $query такую информацию ‘cat/{p}/view’. {p} будет автоматически заменятся номером нужной страницы для постраничной навигации. Если переменная $flp будет равна 1 — то будут выводится в навигации первая и последние странице, в противном случае их выводить не будем. Если же переменная $expanded будет равна 1 — будем выводить расширенную навигацию, которая будет показывать на 2 страницы меньше и больше текущей.
Вроде бы с функционалом разобрались, теперь даю наглядный пример использования навигации:
$all = mysql_result(mysql_query("SELECT COUNT(*) FROM `tbl` ;"),0);
if($all)
{
// Количество записей на страницу
$onpage = 5;
$allpage = ceil($all/$onpage);
$this_page = (isset($_GET['p'])) ? intval($_GET['p']) : 1 ;
if($this_page < 1 || $this_page > $allpage)$this_page = 1;
$start = $this_page*$onpage - $onpage;
$sql = mysql_query("SELECT * FROM `tbl` LIMIT $start,$onpage ;");
while($res = mysql_fetch_assoc($sql))
{
echo .$res['info']."
";
}
navigation($allpage,"cat/{p}/view",1,1);
}
Метки: Пагинатор страниц, Постраничная навигация
4 комментария к “Функция постраничной навигации (php+MySQL).”
Оставить комментарий
Спонсор:
эротические галереи фото бесплатно

Подписка на RSS
281156
14 декабря 2010 в 08:48
А как же скрин
14 декабря 2010 в 12:10
Навигация имеет такой вид
расширенный режим – … 7 …
обычный – … 7 …
без первой и последних страниц расширенный режим – 7
без первой и последней страницы обычный – 7
8 мая 2012 в 19:58
Огромное спасибо тебе! Ты меня можно сказать спас. Я вроде php знаю уже не плоха, но писать по страничную навигацию для меня всегда тяжко. Простою навигацию вида: 1,2,3,4,5 я ещё могу сделать, а вот, что нибудь по серьёзней типо такого: 1…3,4,5…10 это уже трудней.
8 мая 2012 в 20:01
Я правда один кон всё-таки смог написать скрипт навигации с расширенным видом, но я достаточно длительное время не кодил поэтому сейчас повторить былое оказалось не реально.
Ещё раз большое спасибо!