Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Пагинатор

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: ООП
WebBegginer
Отправлено: 29 Февраля, 2012 - 13:19:33
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




Нужен класс пагинатор на php ООП. Может у кого завалялся в загашнике?)
 
 Top
Джур
Отправлено: 29 Февраля, 2012 - 15:09:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




Ну есть такой, правда там всего один метод, можете его просто воткнуть в нужный вам класс:
PHP:
скопировать код в буфер обмена
  1. function paging($url, $page, $len, $size=10){
  2.                 $page = $page/$size;
  3.                 $len = ceil($len/$size)-1;
  4.                 $a = $size;
  5.                 $b = $size;
  6.                 if($page-$a<0){
  7.                         $b += $a-$page;
  8.                         $a = $size-($a-$page);
  9.                 }
  10.                 if($page+$b>$len){
  11.                         $b = $len-$page;
  12.                         $a = $size*2-$len+$page ;
  13.                 }
  14.                 if($page-$a<0){
  15.                         $a = $page;
  16.                 }
  17.            $paging = range($page-$a, $page+$b);
  18.                 if($paging[0]){
  19.                         array_unshift($paging, -1);
  20.                         array_unshift($paging, 0);
  21.                 }
  22.                 if($paging[count($paging)-1]!=$len){
  23.                         $paging[] = -1;
  24.                         $paging[] = $len;
  25.                 }
  26.                 $html = '';
  27.                 if(count($paging)>1 and $len>0){
  28.                         $html .= '<div class="paging">';
  29.                         foreach($paging as $v){
  30.                                 if($v>-1){
  31.                                         $html .= '<a href="/'.$url.'/'.($v*$size).'/">'.($v+1).'</a>';
  32.                                 }else{
  33.                                         $html .= '<span>...</span>';
  34.                                 }
  35.                         }
  36.                         $html .= '</div>';
  37.                 }
  38.                 return $html;
  39.         }


Код явно извращен но с своей задачей справляется.


-----
Тамбовский каджит тебе товарищ
 
 Top
WebBegginer
Отправлено: 29 Февраля, 2012 - 15:15:35
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




Джур пишет:
Ну есть такой, правда там всего один метод, можете его просто воткнуть в нужный вам класс:
PHP:
скопировать код в буфер обмена
  1. function paging($url, $page, $len, $size=10){
  2.                 $page = $page/$size;
  3.                 $len = ceil($len/$size)-1;
  4.                 $a = $size;
  5.                 $b = $size;
  6.                 if($page-$a<0){
  7.                         $b += $a-$page;
  8.                         $a = $size-($a-$page);
  9.                 }
  10.                 if($page+$b>$len){
  11.                         $b = $len-$page;
  12.                         $a = $size*2-$len+$page ;
  13.                 }
  14.                 if($page-$a<0){
  15.                         $a = $page;
  16.                 }
  17.            $paging = range($page-$a, $page+$b);
  18.                 if($paging[0]){
  19.                         array_unshift($paging, -1);
  20.                         array_unshift($paging, 0);
  21.                 }
  22.                 if($paging[count($paging)-1]!=$len){
  23.                         $paging[] = -1;
  24.                         $paging[] = $len;
  25.                 }
  26.                 $html = '';
  27.                 if(count($paging)>1 and $len>0){
  28.                         $html .= '<div class="paging">';
  29.                         foreach($paging as $v){
  30.                                 if($v>-1){
  31.                                         $html .= '<a href="/'.$url.'/'.($v*$size).'/">'.($v+1).'</a>';
  32.                                 }else{
  33.                                         $html .= '<span>...</span>';
  34.                                 }
  35.                         }
  36.                         $html .= '</div>';
  37.                 }
  38.                 return $html;
  39.         }


Код явно извращен но с своей задачей справляется.



Спасибо конечно большое, но мне нужно по такие требования:

выглядит так:
1 ... 17 18 19 [20] 21 22 23 ... 641

Весь код нужно оформить в виде класса Paginator и написать пример,
показывающий его работоспособность.

Класс должен обладать минимум методом установки текущей страницы, и методом установки показываемого количества страниц возле текущей (в приведенном выше примере это 3)
 
 Top
ugin_root
Отправлено: 29 Февраля, 2012 - 17:15:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




PHP:
скопировать код в буфер обмена
  1. class Paginator
  2. {
  3.         public $_current = null;
  4.         public $_count = null;
  5.        
  6.         public $left = 10;
  7.        
  8.        
  9.         public $s_url = '?page=[num]';
  10.         public $s_link = ' <a href="[url]">[num]</a> ';
  11.         public $s_next = ' <a href="[url]">...</a> ';
  12.         public $s_prev = ' <a href="[url]">...</a> ';
  13.         public $s_first = ' <a href="[url]">Первая</a> ';
  14.         public $s_last = ' <a href="[url]">Последняя</a> ';
  15.         public $s_current = ' [num] ';
  16.         public $s_return = '<div>[first] [prev] [links] [next] [last]</div>';
  17.        
  18.        
  19.         function __construct($count, $current, $url = null){
  20.                 $this->_current = (int)$current;
  21.                 $this->_count = (int)$count;
  22.                 if($url != null){
  23.                         $this->s_url = (string)$url;
  24.                 }
  25.         }
  26.        
  27.         function ToString(){
  28.                 $first = '';$prev = '';$links = '';$next = '';$last = '';
  29.                
  30.                 for ($i = 0 ; $i < $this->_count ; $i++)
  31.                 {
  32.                         $url = preg_replace('#\[num\]#Usi', $i, $this->s_url);
  33.                         $patern = array('#\[url\]#Usi','#\[num\]#Usi');
  34.                         $replacement = array($url,$i+1);
  35.                        
  36.                        
  37.                         if($this->_current == $i+1){
  38.                                 $links .= preg_replace($patern, $replacement, $this->s_current);
  39.                         }else if($i < $this->_current + $this->left&& $i > $this->_current - $this->left-2){
  40.                                 $links .= preg_replace($patern, $replacement, $this->s_link);
  41.                         }
  42.                        
  43.                         if($i==0&&$this->_current-1!=$i)                                                $first= preg_replace($patern, $replacement, $this->s_first);
  44.                         if($this->_current-2==$i&&$this->_current-1!=0)                 $prev = preg_replace($patern, $replacement, $this->s_prev);
  45.                         if($this->_current==$i&&$this->_current!=$this->_count) $next = preg_replace($patern, $replacement, $this->s_next);
  46.                         if($this->_count-1==$i&&$this->_current-1!=$i)                  $last = preg_replace($patern, $replacement, $this->s_last);
  47.                 }
  48.                 return preg_replace(
  49.                         array('#\[first\]#Usi', '#\[prev\]#Usi','#\[links\]#Usi',       '#\[next\]#Usi','#\[last\]#Usi'),
  50.                         array($first,                   $prev,                  $links,                         $next,                  $last),
  51.                         $this->s_return
  52.                 );
  53.                
  54.         }
  55. }
  56. $count_page = 666;
  57. $page = @$_GET['page'];
  58. if(is_null($page)||(string)(int)$page!=$page||$page>$count_page||$page<0)$page=0;
  59.  
  60. echo 'открыта страница номер: ' . ($page + 1);
  61. $pagin = new Paginator($count_page, $page + 1, '?forum=23&page=[num]');
  62.  
  63. $pagin->s_current = ' [[num]] ';
  64. $pagin->s_first = ' <a href="[url]">[num]</a> ';
  65. $pagin->s_last = ' <a href="[url]">[num]</a> ';
  66. echo $pagin->ToString();
  67.  
  68. $pagin->left = 3;
  69. $pagin->s_current = ' [num] ';
  70. $pagin->s_first = '';
  71. $pagin->s_last = '';
  72. $pagin->s_next = ' <a href="[url]">туда</a> ';
  73. $pagin->s_prev = ' <a href="[url]">сюда</a> ';
  74. echo $pagin->ToString();

(Отредактировано автором: 29 Февраля, 2012 - 17:41:41)

 
 Top
WebBegginer
Отправлено: 29 Февраля, 2012 - 21:30:46
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




ugin_root пишет:
PHP:
скопировать код в буфер обмена
  1. class Paginator
  2. {
  3.         public $_current = null;
  4.         public $_count = null;
  5.        
  6.         public $left = 10;
  7.        
  8.        
  9.         public $s_url = '?page=[num]';
  10.         public $s_link = ' <a href="[url]">[num]</a> ';
  11.         public $s_next = ' <a href="[url]">...</a> ';
  12.         public $s_prev = ' <a href="[url]">...</a> ';
  13.         public $s_first = ' <a href="[url]">Первая</a> ';
  14.         public $s_last = ' <a href="[url]">Последняя</a> ';
  15.         public $s_current = ' [num] ';
  16.         public $s_return = '<div>[first] [prev] [links] [next] [last]</div>';
  17.        
  18.        
  19.         function __construct($count, $current, $url = null){
  20.                 $this->_current = (int)$current;
  21.                 $this->_count = (int)$count;
  22.                 if($url != null){
  23.                         $this->s_url = (string)$url;
  24.                 }
  25.         }
  26.        
  27.         function ToString(){
  28.                 $first = '';$prev = '';$links = '';$next = '';$last = '';
  29.                
  30.                 for ($i = 0 ; $i < $this->_count ; $i++)
  31.                 {
  32.                         $url = preg_replace('#\[num\]#Usi', $i, $this->s_url);
  33.                         $patern = array('#\[url\]#Usi','#\[num\]#Usi');
  34.                         $replacement = array($url,$i+1);
  35.                        
  36.                        
  37.                         if($this->_current == $i+1){
  38.                                 $links .= preg_replace($patern, $replacement, $this->s_current);
  39.                         }else if($i < $this->_current + $this->left&& $i > $this->_current - $this->left-2){
  40.                                 $links .= preg_replace($patern, $replacement, $this->s_link);
  41.                         }
  42.                        
  43.                         if($i==0&&$this->_current-1!=$i)                                                $first= preg_replace($patern, $replacement, $this->s_first);
  44.                         if($this->_current-2==$i&&$this->_current-1!=0)                 $prev = preg_replace($patern, $replacement, $this->s_prev);
  45.                         if($this->_current==$i&&$this->_current!=$this->_count) $next = preg_replace($patern, $replacement, $this->s_next);
  46.                         if($this->_count-1==$i&&$this->_current-1!=$i)                  $last = preg_replace($patern, $replacement, $this->s_last);
  47.                 }
  48.                 return preg_replace(
  49.                         array('#\[first\]#Usi', '#\[prev\]#Usi','#\[links\]#Usi',       '#\[next\]#Usi','#\[last\]#Usi'),
  50.                         array($first,                   $prev,                  $links,                         $next,                  $last),
  51.                         $this->s_return
  52.                 );
  53.                
  54.         }
  55. }
  56. $count_page = 666;
  57. $page = @$_GET['page'];
  58. if(is_null($page)||(string)(int)$page!=$page||$page>$count_page||$page<0)$page=0;
  59.  
  60. echo 'открыта страница номер: ' . ($page + 1);
  61. $pagin = new Paginator($count_page, $page + 1, '?forum=23&page=[num]');
  62.  
  63. $pagin->s_current = ' [[num]] ';
  64. $pagin->s_first = ' <a href="[url]">[num]</a> ';
  65. $pagin->s_last = ' <a href="[url]">[num]</a> ';
  66. echo $pagin->ToString();
  67.  
  68. $pagin->left = 3;
  69. $pagin->s_current = ' [num] ';
  70. $pagin->s_first = '';
  71. $pagin->s_last = '';
  72. $pagin->s_next = ' <a href="[url]">туда</a> ';
  73. $pagin->s_prev = ' <a href="[url]">сюда</a> ';
  74. echo $pagin->ToString();




Спасибо Вам огромное, а не могли бы вы реализовать index файл, который будет обрабатывать данный класс, с выводом информации на страницах ? Буду безумно благодарен!!!
 
 Top
altvirus
Отправлено: 29 Февраля, 2012 - 22:06:44
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




WebBeginner, тестовое задание на работу делаешь?=)
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Февраля, 2012 - 22:10:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ахах, сумашедшие....
Вот вам 12 заветных строк, делающих то же самое что и полотна кода выше:
http://forum.php.su/topic.php?fo...96202#1302696202
 
 Top
altvirus
Отправлено: 29 Февраля, 2012 - 22:13:22
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DeepVarvar пишет:
Ахах, сумашедшие....
Вот вам 12 заветных строк, делающих то же самое что и полотна кода выше:
http://forum.php.su/topic.php?forum=1&topic=5095&postid=1302696202#1302696202

Да, но по условию надо в ООП одним классом...
 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Февраля, 2012 - 22:33:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




altvirus пишет:
но по условию надо в ООП одним классом

В котором один метод.... Зачем?

Это похоже на: "выбить комару глаз кувалдой"
 
 Top
altvirus
Отправлено: 29 Февраля, 2012 - 22:34:57
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




DeepVarvar пишет:
altvirus пишет:
но по условию надо в ООП одним классом

В котором один метод.... Зачем?

Это похоже на: "выбить комару глаз кувалдой"

ну, вот такое задание. а еще хорошо бы пример применения пагинатора...в общем, нужна помощь=)
 
 Top
digi
Отправлено: 01 Марта, 2012 - 08:37:50
Post Id


Посетитель


Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




внесу свою лепту ;)

https://github[dot]com/d1gi/Smart-Co[dot][dot][dot]or/Paginator.php

разные способы отображения еще не делал, по позже будет оформлен в виде компонента (аля сифони2) в котором уже будет более гибкая система отображения.
 
 Top
ugin_root
Отправлено: 01 Марта, 2012 - 18:28:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




WebBegginer пишет:
Спасибо Вам огромное, а не могли бы вы реализовать index файл, который будет обрабатывать данный класс, с выводом информации на страницах ? Буду безумно благодарен!!!

для этого нужно знать что выводить, и много чего ещё! К вам приходит переменная с номером страницы, и вы вычисляете максимальное число страниц, что ещё нужно???
З.Ы. тестовая страничька итак выводится:
PHP:
скопировать код в буфер обмена
  1. echo 'открыта страница номер: ' . ($page + 1);

используйте ($page + 1) для вывода нужной вам страницы.
 
 Top
WebBegginer
Отправлено: 01 Марта, 2012 - 18:30:23
Post Id



Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Февр. 2012  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




altvirus пишет:
WebBeginner, тестовое задание на работу делаешь?=)


Почему Вы так решили? В институте часть лабораторки ;)
(Добавление)
Вообще я уже начал писать, но у меня не особо складывается, слишком объемно и поэтому я завис Улыбка
Вот пример моего кода
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. class Paginator{
  5.         var $items_per_page;
  6.         var $items_total;
  7.         var $current_page;
  8.         var $num_pages;
  9.         var $mid_range;
  10.         var $low;
  11.         var $high;
  12.         var $limit;
  13.         var $return;
  14.         var $default_ipp = 25;
  15.         var $querystring;
  16.  
  17.         function Paginator()
  18.         {
  19.                 $this->current_page = 1;
  20.                 $this->mid_range = 7;
  21.                 $this->items_per_page = (!empty($_GET['ipp'])) ? $_GET['ipp']:$this->default_ipp;
  22.         }
  23.  
  24.         function paginate()
  25.         {
  26.                 if($_GET['ipp'] == 'All')
  27.                 {
  28.                         $this->num_pages = ceil($this->items_total/$this->default_ipp);
  29.                         $this->items_per_page = $this->default_ipp;
  30.                 }
  31.                 else
  32.                 {
  33.                         if(!is_numeric($this->items_per_page) OR $this->items_per_page <= 0) $this->items_per_page = $this->default_ipp;
  34.                         $this->num_pages = ceil($this->items_total/$this->items_per_page);
  35.                 }
  36.                 $this->current_page = (int) $_GET['page']; // must be numeric > 0
  37.                 if($this->current_page < 1 Or !is_numeric($this->current_page)) $this->current_page = 1;
  38.                 if($this->current_page > $this->num_pages) $this->current_page = $this->num_pages;
  39.                 $prev_page = $this->current_page-1;
  40.                 $next_page = $this->current_page+1;
  41.  
  42.                 if($_GET)
  43.                 {
  44.                         $args = explode("&",$_SERVER['QUERY_STRING']);
  45.                         foreach($args as $arg)
  46.                         {
  47.                                 $keyval = explode("=",$arg);
  48.                                 if($keyval[0] != "page" And $keyval[0] != "ipp") $this->querystring .= "&" . $arg;
  49.                         }
  50.                 }
  51.  
  52.                 if($_POST)
  53.                 {
  54.                         foreach($_POST as $key=>$val)
  55.                         {
  56.                                 if($key != "page" And $key != "ipp") $this->querystring .= "&$key=$val";
  57.                         }
  58.                 }
  59.  
  60.                 if($this->num_pages > 10)
  61.                 {
  62.                         $this->return = ($this->current_page != 1 And $this->items_total >= 10) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$prev_page&ipp=$this->items_per_page$this->querystring\">&laquo; Previous</a> ":"<span class=\"inactive\" href=\"#\">&laquo; Previous</span> ";
  63.  
  64.                         $this->start_range = $this->current_page - floor($this->mid_range/2);
  65.                         $this->end_range = $this->current_page + floor($this->mid_range/2);
  66.  
  67.                         if($this->start_range <= 0)
  68.                         {
  69.                                 $this->end_range += abs($this->start_range)+1;
  70.                                 $this->start_range = 1;
  71.                         }
  72.                         if($this->end_range > $this->num_pages)
  73.                         {
  74.                                 $this->start_range -= $this->end_range-$this->num_pages;
  75.                                 $this->end_range = $this->num_pages;
  76.                         }
  77.                         $this->range = range($this->start_range,$this->end_range);
  78.  
  79.                         for($i=1;$i<=$this->num_pages;$i++)
  80.                         {
  81.                                 if($this->range[0] > 2 And $i == $this->range[0]) $this->return .= " ... ";
  82.                                 // loop through all pages. if first, last, or in range, display
  83.                                 if($i==1 Or $i==$this->num_pages Or in_array($i,$this->range))
  84.                                 {
  85.                                         $this->return .= ($i == $this->current_page And $_GET['page'] != 'All') ? "<a title=\"Go to page $i of $this->num_pages\" class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" title=\"Go to page $i of $this->num_pages\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
  86.                                 }
  87.                                 if($this->range[$this->mid_range-1] < $this->num_pages-1 And $i == $this->range[$this->mid_range-1]) $this->return .= " ... ";
  88.                         }
  89.                         $this->return .= (($this->current_page != $this->num_pages And $this->items_total >= 10) And ($_GET['page'] != 'All')) ? "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$next_page&ipp=$this->items_per_page$this->querystring\">Next &raquo;</a>\n":"<span class=\"inactive\" href=\"#\">&raquo; Next</span>\n";
  90.                         $this->return .= ($_GET['page'] == 'All') ? "<a class=\"current\" style=\"margin-left:10px\" href=\"#\">All</a> \n":"<a class=\"paginate\" style=\"margin-left:10px\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
  91.                 }
  92.                 else
  93.                 {
  94.                         for($i=1;$i<=$this->num_pages;$i++)
  95.                         {
  96.                                 $this->return .= ($i == $this->current_page) ? "<a class=\"current\" href=\"#\">$i</a> ":"<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=$i&ipp=$this->items_per_page$this->querystring\">$i</a> ";
  97.                         }
  98.                         $this->return .= "<a class=\"paginate\" href=\"$_SERVER[PHP_SELF]?page=1&ipp=All$this->querystring\">All</a> \n";
  99.                 }
  100.                 $this->low = ($this->current_page-1) * $this->items_per_page;
  101.                 $this->high = ($_GET['ipp'] == 'All') ? $this->items_total:($this->current_page * $this->items_per_page)-1;
  102.                 $this->limit = ($_GET['ipp'] == 'All') ? "":" LIMIT $this->low,$this->items_per_page";
  103.         }
  104.  
  105.         function display_items_per_page()
  106.         {
  107.                 $items = '';
  108.                 $ipp_array = array(10,25,50,100,'All');
  109.                 foreach($ipp_array as $ipp_opt) $items .= ($ipp_opt == $this->items_per_page) ? "<option selected value=\"$ipp_opt\">$ipp_opt</option>\n":"<option value=\"$ipp_opt\">$ipp_opt</option>\n";
  110.                 return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n";
  111.         }
  112.  
  113.         function display_jump_menu()
  114.         {
  115.                 for($i=1;$i<=$this->num_pages;$i++)
  116.                 {
  117.                         $option .= ($i==$this->current_page) ? "<option value=\"$i\" selected>$i</option>\n":"<option value=\"$i\">$i</option>\n";
  118.                 }
  119.                 return "<span class=\"paginate\">Page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\">$option</select>\n";
  120.         }
  121.  
  122.         function display_pages()
  123.         {
  124.                 return $this->return;
  125.         }
  126. }
  127.  
  128.  

(Отредактировано автором: 01 Марта, 2012 - 18:51:44)

 
 Top
ugin_root
Отправлено: 01 Марта, 2012 - 20:09:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 134
Дата рег-ции: Май 2011  
Откуда: Киргизия


Помог: 5 раз(а)




WebBegginer
рад помочь несчастным студентам!
но вы видать не поняли...
//есть 2 переменных номер страницы [num] и [url] до этой самой страницы
PHP:
скопировать код в буфер обмена
  1. public $s_url = '?page=[num]';
  2. public $s_link = ' <a href="[url]">[num]</a> ';
  3. public $s_next = ' <a href="[url]">...</a> ';
  4. public $s_prev = ' <a href="[url]">...</a> ';
  5. public $s_first = ' <a href="[url]">Первая</a> ';
  6. public $s_last = ' <a href="[url]">Последняя</a> ';
  7. public $s_current = ' [num] ';

не нужно в самом классе задавать лишние! Вот что это за х-ня? никто не поймёт!
PHP:
скопировать код в буфер обмена
  1.                 return "<span class=\"paginate\">Items per page:</span><select class=\"paginate\" onchange=\"window.location='$_SERVER[PHP_SELF]?page=1&ipp='+this[this.selectedIndex].value+'$this->querystring';return false\">$items</select>\n";

а это понять намного проще!
PHP:
скопировать код в буфер обмена
  1. $pagin->s_link = '<a title="Go to page [num]" class="current" href="[url]">[num]</a> ';

(Добавление)
тем более подобные конструкции нежелательно использовать внутри класса! задавайте стандарт, т.е. то что будет работать всегда.
CODE (htmlphp):
скопировать код в буфер обмена
  1. style=\"margin-left:10px\"
  2. <option selected value=\"$ipp_opt\"
  3. onchange=\"window.location='$_SERVER[PHP_SELF]?page='+this[this.selectedIndex].value+'&ipp=$this->items_per_page$this->querystring';return false\"
  4. class=\"paginate\"

подобного хлама в классе задавать не следует
(Добавление)
не факт что всем нужно переместить блок на 10px от левого края
не факт что всем нужно отобразить это в виде <select>
не факт что всем нужно действие Java Script-ов на нажатие ссылки
не факт что у всех прописан сласс "paginate" в стилях

все эти "параметры" доложны задаваться локально!
(Добавление)
класс для того и нужен что-бы отделить весе полезности (данного класса), от того что вы в него добавили(гов..., нехорошего кода для класса)
на месте вашего преподавателя ставил бы смело 2 за такой класс...

(Отредактировано автором: 01 Марта, 2012 - 20:24:20)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB