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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите народ с алгоритмом? Вывод страниц средствами php 
:(
    Опции темы
soloweb
  Дата 11.11.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Georgian
*


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

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



Нужен алгоритм!
Типа выводит страницы 1,2,3,4,5,6... выводит не просто а допустим страниц 1000 а он выводит их по 7 ну короче ограниченно ! Может кто-то делал такое или где-то видел! Поделитесь плизз!
Пока пойду сам думать! 
Заранее спасибо!
PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 11.11.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Код
 function get_page_list( $curr_page , $all , $per_page , $href )
  {
   global $CFG;
   global $LNG;

   $ret = "</p>" . $LNG['pages'];

   for( $i = 1 ; $i <= ceil( $all / $per_page ) ; $i++ )
    {
     if( $i == $_GET['p'] )
      {  $ret .= "<b>" . $i . "</b>";  }
     else
      {  $ret .= "<a href='" . $href . "?p=" . $i . "' class='content'>" . $i . "</a>";  }

     if( $i == ceil( $all / $per_page ) )
      {  $ret .= ".";  }
     else
      {  $ret .= $CFG['per_page_divider'];  }
    }

   return $ret;
  }

PM ICQ   Вверх
soloweb
Дата 11.11.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Georgian
*


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

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



Mal Hack Спасибо за быстрый ответ, но это немного не тот алгоритм который я хотел!
Мне нужно чтобы вывод страниц на страницу были не все страницы которые имеются а ограниченное число! Типа есть 1000 записей хочу вывести на страницу по 10 записей! Делаю 1000/10=100 страниц!
Выводить на страницу надо типа так: 1,2,3...9,10,11... и при нажатии на 3-ю страницу выводилось ...3,4,5...11,12,13... и так далее до 100 ! Типа этого! Спасибо!
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 11.11.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



soloweb, может, здесь что нибудь стоящее найдется?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Mal Hack
Дата 11.11.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



soloweb, тут надо просто сформулировать начало и конца цикла.
Смысл грубо говоря такой.
Код

$start = ( ceil( $all / $per_page ) - $curr - 10 ) < 1 ) ? 1 : ( ceil( $all / $per_page ) - $curr - 10 );
$end = ( ( $start + 10 ) > ceil( $all / $per_page ) )  ? ceil( $all / $per_page ) : $start + 10;

PM ICQ   Вверх
soloweb
Дата 12.11.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Georgian
*


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

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



Искал но не нащел ничего для души!
Вот вроде написал свой класс!

Кому надо пусть берет!
Ничего лишнего! Требования PHP5 smile ! Это призыв переходить на PHP5! 
У кого хостинг с PHP4 пусть уходят от них! smile Только тогда они начнут менять на php5 больше ничего не поможет! Это так мое мнение! smile

Код

    class pageList
    {
        
        var $allpages;
        var $currpage;
        var $near;
        var $fromurl;
        var $totaltp;
        var $pages;
        var $msg=array();
        var $razd;
        var $sepl;
        var $sepr;
        var $style;
        
        function __construct($allpages,$curpage,$fromurl,$totaltp=10,$near=5)
        {
            
            $this->allpages=$allpages;
            $this->currpage=$curpage;
            $this->fromurl=$fromurl;
            $this->near=$near;
            $this->totaltp=$totaltp;
            $this->msg=$msg;
            $this->pages=ceil($this->allpages/$this->totaltp);
            $this->razd=$razd;
            $this->sepl='&nbsp<b>[&nbsp;';
            $this->sepr='&nbsp;]</b>&nbsp;';
            $this->razd=',';
            $this->msg=array('first'=>'Начало','back'=>'Назад','next'=>'Вперед','end'=>'Последняя');
            $this->style='class="page"';
            
        }
        
        function setSeparators($sepl,$sepr) // Изменяем значение сепараторов! По стандарту '<b>[ ' ' ]</b>'! По желанию можно менять
        {
            $this->sepl=$sepl;
            $this->sepr=$sepr;
        
        }
        
        function setMsg($msg=array()) // Изменяем параметры alt к ссылкам!
        {
            $this->msg=$msg;
        }
        
        function setRazdelitel($razd) // Изменяем значение разделителя! По стандарту ','
        {
            $this->razd=$razd;
        }
        
        function setStyle($style)
        {
            $this->style=$style;
        }
        
        function getUrl($p)
        {
            $out=str_replace('%%p%%',$p,$this->fromurl);
            return $out;
        }
        
        
        
        function &getPages()
        {
            $start=(($this->near-$this->currpage) >= 0 ?
                                                1 : (($this->currpage-$this->near)));
            $end=(($this->currpage+$this->near)<$this->pages ? ($this->currpage+$this->near)
                                                                                : $this->pages);
            
                                                                                
            for($i=$start; $i<=$end; $i++)
            {
                
                if($i==$this->currpage) { $outp="{$this->sepl}{$i}{$this->sepr}"; }
                else { $outp="<a href='".$this->getUrl($i)."' $this->style>".$i.((($i<$this->pages) && ($i<$end) ? $this->razd :''))."</a>"; }
                
                
                $out.=$outp;
            }
            
            if($this->currpage>($this->near+1)) { $leftp="<a href='".$this->getUrl(1)."' $this->style alt='".$this->msg['first']."'>&nbsp;<<&nbsp;</a>"; }
                
            if($this->currpage>1) {$leftp.="<a href='".$this->getUrl(($this->currpage-1))."' $this->style alt='".$this->msg['back']."'>&nbsp;<&nbsp;</a>";}
                
            if($this->currpage<$this->pages) { $rigthp="<a href='".$this->getUrl(($this->currpage+1))."' $this->style alt='".$this->msg['next']."'>&nbsp;>&nbsp;</a>"; }
                
            if(($this->currpage+$this->near)<$this->pages) { $rigthp.="<a href='".$this->getUrl(($this->pages))."' $this->style alt='".$this->msg['end']."'>&nbsp;>>&nbsp;</a>"; }
            
            $ret=$leftp.$out.$rigthp;
            
            return $ret;    
        }
        
        function display()
        {
            echo $this->getPages();
        }
        
    }




PM MAIL WWW ICQ   Вверх
Eugene_Bond
Дата 12.11.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(soloweb @  12.11.2006,  18:04 Найти цитируемый пост)
Ничего лишнего! Требования PHP5 smile ! Это призыв переходить на PHP5!


А чего тут пыхопятого?
PM MAIL   Вверх
Mal Hack
Дата 12.11.2006, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


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

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



Лишь наличие конструктора, обявленного по правилам PHP5.
PM ICQ   Вверх
Eugene_Bond
Дата 13.11.2006, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Конструктор я вижу. И больше ничего..

Так что не вижу повода не добавить метод типа:

Код

function pageList($allpages,$curpage,$fromurl,$totaltp=10,$near=5) }
    $this->__construct($allpages,$curpage,$fromurl,$totaltp,$near);
}


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.

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


 




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


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

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