Главная > Новости > Функция постраничного вывода – пагинатор

Функция постраничного вывода – пагинатор

Копался тут в своих библиотеках и нарыл свою первую функцию!!! Функция постраничного разбиения – нынче в народе зовется “пагинатор” (paginator). Написал я сее творение аж в 2002 году, когда учил php еще по манам php3. Далее этот код перекачивал в мою CMS и стал там использоваться направо и налево, естественно мутируя под ЧПУ и требования сеошников – отслеживать чтобы при постраничном выводе не было дублей страниц.

Функция возвращает строку вида:

<< < 1 2 3 4 5 > >>

, где:

  • << – переход к самому первому блоку
  • < – переход к предыдущему блоку
  • > – переход к следующему блоку
  • >> – переход к последнему блоку

на входе имеет 4 параметра:

  • integer $total – общее количество страниц ( ceil(общее кол-во. записей / кол-во. записей на странице) )
  • integer $currentpage – номер текущей страницы ( отсчет идет от 0 )
  • string $link – какую ссылку вставлять в пагинаторе (пример: page.php?id=3&page = )
  • integer $block – по сколько страниц делать в блоке, в данном примере 5

Далее собственно сам код, он не претендует на оскара…

/**
* Создает постраничное разбиение
* @author PHPLancer 2002
*
* @param integer $total
* @param integer $currentpage
* @param string $link
* @param integer $block
* @return string
*/
function pageListing($total, $currentpage, $link, $block)
{
$j = 0;
$s = "";
$array = array();
for($i = 0, $max = ceil($total/$block); $i <= $max; $i++)  {
$array[$i] = $j;
$j += $block;
}

for($i = 0, $max = sizeof($array); $i < $max; $i++)   if($currentpage >= $array[$i]  &amp;amp;amp;&amp;amp;amp; $currentpage < $array[$i]+$block) break;

if($i > 0) $s .= "<a href=\"".$link.$array[0]."\"> << </a> <a href=\"".$link.($array[$i-1]+$block-1)."\" > < </a> \n";

$z  = (($array[$i]+$block) > $total) ?  $total : $array[$i+1];

for($j=$array[$i];$j<$z;$j++)  $s .= ($currentpage==$j) ?  "<span>".($j+1)." </span> " :  "<a href=\"".$link.$j."\">".($j+1)."</a>  \n";

$max = sizeof($array);

if($i<($max-2)) $s .= "<a href=\"".$link.$array[$i+1]."\" > >  </a> <a href=\"".$link.$array[$max-2]."\" > >> </a> \n";
return $s;
}

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Categories: Новости Tags:
  1. 1 Июль 2012 в 16:11 | #1

    Хорошая статья – за минуту становится все понятно, конечно код плоховат особенно эти циклы с кучей ненужных действий, например sizeof как бы быстрее count, но у вас в цикле каждый раз вымеряется sizeof это не то что не профессианально, это просто не понимание основ!! Наверно в 2000 так было нормально,))

*