Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> класс pagination 
:(
    Опции темы
lumentek
Дата 19.5.2011, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



попался один проект где используется класс постраничной навигации. класс неплохой, но сыроват. вот сам класс
Код

<?
  /*
  $array =

            array(
                'total' => 350,                                    // общее количество елементов
                'cur_page' => $_GET['page'],                        // номер елемента текущей страницы
                'number_page' => 10,                             // кол-во показываемых страниц
                'open_tag'=>'<span> ',                              // открывающий тег неактивного елемента
                'close_tag'=>' </span>',                            // закрывающий тег неактивного елемента
                'active_open_tag'=>'<b>',                           // открывающий тег активного елемента
                'active_close_tag'=>'</b>',                        // закрывающий тег активного елемента
                'mask'=>'?page=',                                   // маска url
                'open_lastPage'=>'<span class="last">',             // открывающий тег ссылки на предыдущие страницы
                'close_lastPage'=>'</span>',                     // закрывающий тег ссылки на предыдущие страницы
                'open_nextPage'=>'<span class="next">',             // открывающий тег ссылки на следущие страницы
                'close_nextPage'=>'</span>'                         // закрывающий тег ссылки на следущие страницы

        );
      */
  class Candy_Pagination {

        private $total;
        private $cur_page;
        private $number_page;
        private  $array = array();

        public function __construct($array) {
            return $this->array = $array;
        }

        public function getTotal() {
           if(!empty($this->array['total']))return  $this->total = $this->array['total']; else trigger_error('Error:');
        }
        public function getNumberPage() {
          if(!empty($this->array['number_page'])) return $this->number_page = $this->array['number_page']; else return $this->number_page = 10;
        }
        public function getCurPage() {
           if(!empty($this->array['cur_page'])) return $this->cur_page = (int) $this->array['cur_page']; else return $this->cur_page = 1;
        }

        public function getCountPage() {
          return intval($this->getTotal()/$this->getNumberPage());
        }
        public function getBetween() {
         $delta =  $this->getCurPage()%$this->getNumberPage();
         $delta === 0 ? $delta = $this->getNumberPage() : '';
         return $beteen =  intval($this->getCurPage()-$delta+1);
        }
        public function getEndElem() {
           return $this->getBetween()+$this->getNumberPage()-1;
        }

        public function limit() {
            return " LIMIT {$this->start()},{$this->getNumberPage()}";
        }
        public function start() {
            return $this->getCurPage()*$this->getNumberPage()-$this->getNumberPage();
        }

        public function display() {

        if($this->getCurPage() > $this->getNumberPage()) {
            $html .= $this->array['open_lastPage'].'<a href="'.$this->array['mask'].($this->getBetween()-1).'">Предыдущие</a>'.$this->array['close_lastPage'];
         }

            for($i=$this->getBetween(); $i<=$this->getCountPage();$i++) {

             if($i == $this->getCurPage())  {
                     $html .=$this->array['active_open_tag'].'<a href="'.$this->array['mask'].'">'.$i.'</a>'.$this->array['active_close_tag'];

                }
                else {

                   $html .= $this->array['open_tag'].'<a href="'.$this->array['mask'].$i.'">'.$i.'</a>'.$this->array['close_tag'];
                }

                if($i == $this->getEndElem()) {

                 $html .= $this->array['open_nextPage'].'<a href="'.$this->array['mask'].($i+1).'">Следущие</a>'.$this->array['close_nextPage'];
                 //break;
                }
            }
            echo $html;
        }
  }


  ?>


пример использования
Код

$array =

            array(
                'total' => $count,                                // общее количество елементов
                'cur_page' => $page,                                // номер елемента текущей страницы
                'number_page' => 10,                             // кол-во показываемых страниц
                'open_tag'=>'<span> ',                              // открывающий тег неактивного елемента
                'close_tag'=>' </span>',                            // закрывающий тег неактивного елемента
                'active_open_tag'=>'<b>',                           // открывающий тег активного елемента
                'active_close_tag'=>'</b>',                        // закрывающий тег активного елемента
                'mask'=>'/news/',                                   // маска url
                'open_lastPage'=>'<span class="last">',             // открывающий тег ссылки на предыдущие страницы
                'close_lastPage'=>'</span>',                     // закрывающий тег ссылки на предыдущие страницы
                'open_nextPage'=>'<span class="next">',             // открывающий тег ссылки на следущие страницы
                'close_nextPage'=>'</span>'                         // закрывающий тег ссылки на следущие страницы

        );

        $pagination = new Candy_Pagination($array);
if($count>10) {
          echo '<div class="pagination">';
            $pagination->display();
          echo '</div>';

        }


проблема заключается в том что данный класс может вывести в пагинаторе на одну страницу меньше, если например там страниц меньше 10. Как можно исправить ситуацию?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.