Перейти к содержимому

Сервис обмена электронных валют


  • Закрытая тема Тема закрыта

Улучшить паджинатор

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 04 Декабрь 2010 - 17:02

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

Как можно улучшить ее с теми же входными параметрами, чтобы например он выводил только диапазон страницпо три в обе стороны и многоточия. Ну или как-то так?

function page_list($whole, $limit, $link) {
if ($limit < $whole) {
$pages = ceil($whole/$limit);
$do = isset($_GET['do']) ? '&do='.$_GET['do'].'' : '';
$pg = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
if ($pages > 1) {
echo "<br />".__PAGE." <b>".$pg."</b><br />";
}
for ($i=0; $i<$pages; $i++) {
$page = $i+1;
if($pg==$page) {
echo '&nbsp;<span class="pagesel">'.$page.'</span>&nbsp;';
} else {
echo '&nbsp;<a href="'.$link.$do.'&page='.$page.'" class="pages">'.$page.'</a> ';
}
}
}
}

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 04 Декабрь 2010 - 23:36

gaaarfild, всё достаточно просто, напишу на коленке:
<?php

function page_start($cur_page, $limit_pages)
{
return ($cur_page - $limit_pages) > 0 ? $cur_page - $limit_pages : 0;
}

function page_end($cur_page, $total_pages, $limit_pages)
{
return ($cur_page + $limit_pages) < $total_pages ? $cur_page + $limit_pages : $total_pages;
}

function page_list($whole, $limit, $link, $limit_pages=3)
{
if ($limit < $whole) {
$pages = ceil($whole/$limit);
$do = isset($_GET['do']) ? '&do='.$_GET['do'].'' : '';
$pg = (isset($_GET['page'])) ? intval($_GET['page']) : 1;

$page_start = page_start($pg, $limit_pages); // с какой страницы выводить
$page_end = page_end($pg, $pages, $limit_pages); // до какой страницы выводить

if ($pages > 1) {
echo "<br />".__PAGE." <b>".$pg."</b><br />";
}
for ($i=$page_start; $i<$page_end; $i++) { // здесь немного изменили условия и инициализацию цикла
$page = $i+1;
if($pg==$page) {
echo '&nbsp;<span class="pagesel">'.$page.'</span>&nbsp;';
} else {
echo '&nbsp;<a href="'.$link.$do.'&page='.$page.'" class="pages">'.$page.'</a> ';
}
}
}
}

?>

Ну а уж как дописать троеточия или что либо другое при выводе это твоя задача xD Кстати, выкладывал ведь на форуме хороший класс навигации по страницам. Вот где-где а здесь самое оно применить ООП.
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 05 Декабрь 2010 - 16:58

Ух отлично))
Именно то, что надо и ничего лишнего. НА последнее и первое сам доделал)) Спасибо большое)
  • 0


Оформление форума – IPBSkins.ru