Вы не зашли.
Главная » PHP » Функция навигации по страницам
#151. Gemorroj Off (107)
Administrator
2013.01.19 12:12
"Не прошло и года" (с) совсем чуть-чуть осталось)
#152. tipsun Off (19)
Moderator
2013.01.19 12:12
Письмо из центpа до Штиpлица не дошло...
Он пpочитал его еще pаз. Опять не дошло...
Пpишлось читать в тpетий pаз. smile
Добавлено спустя   5 минут  19 секунд:
Akdmeh за весь год не нашел времени посмотреть мою говновигацию. sad
Добавлено спустя   5 минут  45 секунд:
А так с первого поста уже почти 2 года.
#153. Merzavetz Off (1)
Участник
2013.01.22 14:02
Код:
span style="color: #0000BB"><?phpif ($all > 1) { echo '<div class="iblock">Страницы: '; $asd = $page - 2; $asd2 = $page + 3; if ($asd < $all && $asd > 0 && $page > 3) { echo '<a href="index.php?id=' . $id . '&amp;page=1">1</a> ... '; } for ($i = $asd; $i < $asd2; $i++) { if ($i < $all && $i > 0) { if ($i > $pages) { break; } if ($page == $i) { echo '<strong>[' . $i . ']</strong> '; } else { echo '<a href="index.php?id=' . $id . '&amp;page=' . $i . '">' . $i . '</a> '; } } } if ($i <= $pages) { if ($asd2 < $all) { echo ' ... <a href="index.php?id=' . $id . '&amp;page=' . $pages . '">' . $pages . '</a>'; } }
Это код постраничной навигации sea downloads 2. Подскажите пожалуйста ,как сделать чтобы отображались только первая, последняя, текущая, следующая и предыдущая страницы. Надо исключить ссылки на две страницы, которая перед предыдущей и которая за следующей. Голову сломал, не знаю как сделать.
Пример подобной постраничной навигации в в движке этого форума http://wapinet.ru/forum/wap/viewtopic.php?id=1281&p=12 . Нужно исключить десятую и четырнадцатую страницу.
Отредактировано Merzavetz (2013.01.22 14:02)
#154. Gemorroj Off (107)
Administrator
2013.01.22 19:07
Merzavetz можешь просто выпилить ее и заменить на другую. такой код, действительно, трудно править)
#155. tipsun Off (19)
Moderator
2013.02.01 23:11
Gemorroj написал:
"Не прошло и года" (с) совсем чуть-чуть осталось)
Как всегда, ты прав.
Поправил функцию: paginationRange();
Пост #150
Добавлено спустя   2 минуты  18 секунд:
А вообще я сам честно говоря бы делал все очень просто, через форму.
Показать скрытый текст
Отредактировано tipsun (2013.02.01 23:11)
#156. tipsun Off (19)
Moderator
2013.02.06 14:02
Переделал private _isNatural() на protected static _isNatural().
#157. tipsun Off (19)
Moderator
2013.02.10 16:04
Еще одна, на мой взгляд, уместная поправка. Сравнить можно этот и пост #150.
Код:
span style="color: #0000BB"><?php/** * Автор: TiPsun (tipsun91@gmail.com) * (c) 2013 * Блогодарность за помощь * в написании кода: ++ Gemorroj (http://wapinet.ru/) ++ Akdmeh (Akdmeh@gmail.com)**/namespace Core\Library;class Pagination { protected // Дано $_pageCursor = 1, $_itemsCount = 0, $_itemsRange = 10, // Результат $_pagesCount = 1, $_pageNumber = 1, $_startPoint = 0; public function __construct() { } /** * Проверка числа на принадлежность к множеству натуральных. * @param integer $number * @return bool */ protected static function _isNatural($number) { return (is_numeric($number) and 0 < $number); } /** * Регистрация общего кол-ва записей. * @param integer $arg * @return PageMan */ public function setCount($arg) { if (self::_isNatural($arg)) { $this->_itemsCount = (int) $arg; $this->_pagesCount = null; } return $this; } /** * Регистрация текущей страницы. * @param integer $arg * @return pageMan */ public function setCursor($arg) { if (self::_isNatural($arg)) { $this->_pageCursor = (int) $arg; $this->_pageNumber = null; } return $this; } /** * Регистрация кол-ва записей на страницу. * @param integer $arg * @return pageMan */ public function setItems($arg) { if (self::_isNatural($arg)) { $this->_itemsRange = (int) $arg; $this->_pagesCount = null; $this->_startPoint = null; } elseif ($this->_itemsCount) { $this->_itemsRange = $this->_itemsCount; $this->_pagesCount = null; $this->_startPoint = null; } return $this; } /** * Расчет общего кол-ва страниц. * @return integer */ public function getPages() { if (null === $this->_pagesCount) { if ($this->_itemsCount) { $this->_pagesCount = (int) ceil($this->_itemsCount / $this->_itemsRange); } } return $this->_pagesCount; } /** * Получение номера корректной текущей страницы. * @return integer */ public function getPage() { if (null === $this->_pageNumber) { $this->_pageNumber = min($this->_pageCursor, $this->getPages()); } return $this->_pageNumber; } /** * Расчет начальной точки отсчета показа записей в вашем цикле. * @return integer */ private function _calculateStartPoint() { if (null === $this->_startPoint) { $this->_startPoint = ($this->getPage() - 1) * $this->_itemsRange; } return $this->_startPoint; } /** * Расчет конечной точки отсчета показа записей в цикле для массива данных. * @return array */ public function getArrayPoints() { return array( $this->_calculateStartPoint(), min(($this->_startPoint + $this->_itemsRange), $this->_itemsCount) ); } /** * Расчет конечной точки отсчета показа записей в цикле для данных * в таблице (DB). * @return array */ public function getTablePoints() { return array( $this->_calculateStartPoint(), $this->_itemsRange ); } /** * Расчет конечной точки отсчета показа записей в цикле для данных * в таблице (DB). * @return string */ public function getTableLimit() { return 'LIMIT ' . $this->_calculateStartPoint() . ', ' . $this->_itemsRange; }}
Страниц: 114 15 16 Все
Главная
WEB
PunBB Mod v0.6.2
0.021 s