За последние 24 часа нас посетили 8658 программистов и 476 роботов. Сейчас ищут 222 программиста ...

Постраничный вывод результатов (он же пейджер)

Тема в разделе "PHP для новичков", создана пользователем 440Hz, 16 авг 2007.

  1. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Нет, но было бы неплохо если бы так получилось)
    Вообще, у меня есть небедный опыт в PHP, Zend, yii и прочем, знаю ньюансы и подводные камни. Не все, но большинство. Может кому-то да пригодится.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    есть опыт? попиарить сайт? тогда вам придётся поучаствовать в ответах на вопросы новичков и не только. ;)

    велкам search.php?search_id=unreadposts
     
  3. Swapf

    Swapf Активный пользователь

    С нами с:
    8 окт 2012
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    Россия, Самарская обл, Сызрань
    Спасибо за ссылку. Надо было сразу в этот раздел.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    6
  5. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Добавлю и от себя кусочек.

    Пагинатор немного отличается от стандартного. Например, если всего записей 42 и мы выводим по 10 элементов на страницу, то будет отображено 4 страницы, и на последней будет выведено 12 элементов, но все зависит от параметра $CountAfterMax.

    Массив, которые получим из функции, можно передавать в функции, которые делают выборку из БД, и использовать ключи limit и offset. Также в ключе pages содержится массив, в котором есть необходимая информация для вывода ссылок на страницы.
    Вывести можно примерно так:

    Код (Text):
    1. <?php
    2.   <div class="pagin">
    3.   <?php foreach( $Pagin['pages'] as $PgRow ) : ?>
    4.     <?php if ( $PgRow['islink'] ) : ?>
    5.       <a href="<?=$Pagin['page'].$PgRow['link'];?>/" rel="<?=$PgRow['link']?>"><?=$PgRow['text'];?></a>
    6.     <?php else : ?>
    7.       <span><?=$PgRow['text'];?></span>
    8.     <?php endif ; ?>
    9.   <?php endforeach;?>
    10.   </div>
    11. ?>
    Код (Text):
    1.   /*
    2. <?php
    3.     @param ($Page)   - номер станицы
    4.     @param ($Count) - количество записей всего
    5.     @param ($Link)   - ссылка вида http://site.ru/page/12/page/
    6.     @param ($Gets)  - строка, которая идет после ? (GET-параметры)
    7.     @param ($Count2Page) - количество выводимых на страницу элементов
    8.     @param ($CountAfterMax) - кол-во элементов, которые могут выводиться после максимально выводимого кол-ва на страницу. Например, если на страницу выводится по пять элементов, а на последней осталось 6 элементов, то выведется 6 (ПРИ УСЛОВИИ ЧТО $CountAfterMax => 1)
    9.     @param ($CountLinks) - количество ссылок выводимых в пагинаторе
    10.     @param ($interval) - показывать текст ссылки в виде интервала 1-10, 11-21 ...
    11.     @param ($sep) - разделитель, в случае если ссылки выводятся интервалами
    12.  
    13.     возвращает массив, где
    14.       pages - массив:
    15.                     text - текст ссылки
    16.                     link - номер страницы
    17.                     islink - ссылка или span(текущая страница)
    18.  
    19.       page   - возвращаем 3- входной параметр (сслыка)
    20.       limit  - кол-во выбираемых элементов из БД
    21.       offset - смещение в запросе к БД
    22.       gets   - 4-й входной параметр (GET-параметры)
    23.   */
    24.  function Pagin( $Page, $Count, $Link, $Gets='', $Count2Page=10, $CountAfterMax=3, $CountLinks=10, $interval=false, $sep='-' ){
    25.  
    26.     $res    = array();
    27.     $limit  = $Count2Page;
    28.  
    29.     if ( $Count2Page >= $Count || $Page < 1 )
    30.       return $res;
    31.  
    32.     $allPage = ceil( $Count/$Count2Page );
    33.    
    34.     $ost = $Count % $Count2Page;
    35.  
    36.     if ( $ost <= $CountAfterMax && $ost!=0 ) /* $Count <= ($Count2Page+$CountAfterMax) */
    37.       $allPage = $allPage-1;
    38.  
    39.     if ( $allPage == 1 )
    40.       return $res;
    41.  
    42.     $i=1;
    43.     $lastPage = $allPage;
    44.     if ( $lastPage > $CountLinks )  
    45.     {
    46.       $i = intval( $Page - ( $CountLinks/2 ) );
    47.       $lastPage = $i + $CountLinks;              
    48.    
    49.       if ( $lastPage > $allPage )
    50.       {  
    51.         $lastPage = $allPage;    
    52.         $i = $lastPage-$CountLinks;
    53.       }
    54.  
    55.       if ( $i < 1 )  
    56.       {
    57.         $i = 1;      
    58.         $lastPage = $CountLinks;
    59.       }
    60.     }
    61.  
    62.  
    63.     if ( $lastPage==$Page )    
    64.       $limit  += $ost;  
    65.  
    66.     $offset = ($Page-1) * $Count2Page;
    67.  
    68.     for ( ; $i<=$lastPage; $i++)  
    69.     {
    70.       $res[$i] = array();
    71.  
    72.       $disp = $i;
    73.  
    74.       if ( $interval )
    75.       {
    76.         $disp  = (($i-1)*$Count2Page+1) . $sep;
    77.         if ( $i==$allPage )
    78.           $disp .= $Count;
    79.         else
    80.           $disp .= (($i-1)*$Count2Page+$Count2Page);
    81.       }
    82.  
    83.       $res[$i]['text'] = $disp;
    84.       $res[$i]['link'] = $i;
    85.  
    86.       if ( $i==$Page )
    87.       {
    88.         $res[$i]['islink'] = false;
    89.         continue;
    90.       }
    91.  
    92.       $res[$i]['islink'] = true;
    93.     }
    94.  
    95.     if ( $Page > 1 )
    96.     {
    97.       $prev = array(
    98.         'text'    => '&lt;' ,
    99.         'link'    => $Page-1,
    100.         'islink'  => true
    101.       );
    102.       $first = array(
    103.         'text'    => '&lt;&lt;' ,
    104.         'link'    => 1,
    105.         'islink'  => true
    106.       );
    107.       array_unshift( $res, $first, $prev );
    108.     }
    109.  
    110.     if ( $Page < $lastPage )
    111.     {
    112.       $next = array(
    113.         'text'    => '&gt;' ,
    114.         'link'    => $Page+1,
    115.         'islink'  => true
    116.       );
    117.       $last = array(
    118.         'text'    => '&gt;&gt;' ,
    119.         'link'    => $allPage,
    120.         'islink'  => true
    121.       );
    122.       array_push( $res, $next, $last );      
    123.     }
    124.  
    125.     $res = array('pages' => $res);
    126.     $res['page'] = $Link;
    127.     $res['limit'] = $limit;
    128.     $res['offset'] = $offset;
    129.  
    130.     $res['gets'] = ($Gets=='') ? '' : ('?'.$Gets);
    131.  
    132.     return $res;
    133.   }
    134. ?>
     
  6. deblogger

    deblogger Новичок

    С нами с:
    11 июл 2013
    Сообщения:
    200
    Симпатии:
    0
    Даже не представляю что можно написать вокруг двух значений одной переменной limit.
     
  7. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    6
    Я уже вообще забыл, что такое постраничная навигация =)))
    Есть куда круче решение уже.
    Таже кнопка "показать еще", запомнить пост, новость и т.д. (смотря, для чего эта кнопка принадлежит).
    Помучили пагинацию и хватит =)
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    такой ты ребенок =)
    давай замути 500 страниц "показать еще"
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    6
    И чтож, будет^^ ООО великий программист!
    Да хоть 100500-это пох.
    Походу ты тронулся или не дочитал, или не понял или тупишь. Вариантов много, предположений тоже.
    Но ляпнул ты хуйню.
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    Т.е. ты думаешь, я полагаю, что это сложно реализовать? :D

    Как тебе такой вариант. Ты забыл подумать о людях, которые будут 500 раз тыкать "показать еще" и проклинать тебя и твоих детей. =)
    Ну и кто теперь тупит?

    Добавлено спустя 1 минуту 40 секунд:
    и да, "ты тупишь" тянет на оскорбление, даже в предположительной форме.
    Если тебя кто-то бесит - так и пиши, мол ты меня бесишь. Перестань оскорблять окружающих.
     
  11. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    6
    Для тебя-это не возможно.
    Тупишь ты и только ты. Кто сказал, что это простая кнопка тыкалка даже без сохранений и плюшек? ТЫ РЕАЛ ТРОНУЛСЯ!
    Что ты так будешь каждую страницу просматривать все 500 тыкать -> следующая, следующая, следующая.
    Я теперь понял, ты когда пишешь не читаешь и не думаешь. ТЫ ПРОСТО ПИШЕШЬ!
    Ой, ой, ой, еще бан дай мне, ЛОЛ!
    Меня никто не бесит, я не бешусь никогда, я не псих. Но когда такие как ты, конченые пытаются выражать свои мысли и у них не получается этого сделать, а потом еще и пытаются ерничать-это тупо. По-этому скажу тебе прямо, твое мнение ничего не значит как и ты сам. ОЧНИСЬ!
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.439
    Симпатии:
    1.744
    =)
    Ты само спокойствие :D

    Your помолчит семь дней.
     
  13. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    194
    Симпатии:
    2
  14. askanim

    askanim Активный пользователь

    С нами с:
    7 апр 2016
    Сообщения:
    2.192
    Симпатии:
    166
    Адрес:
    GABRIEL
    А я вообще по другому сделал за счёт, ajax. Я отправляю аяксом запрос сколько у меня, на странице выводится, и формирую пейджинг ну формирую, саму навигацию, а потом уже формирую исходя из нажатой кнопки навигации, то есть конечное кол-во показаных товаров, и от неё уже делаю новым запросом выборку по лимит, до того по куда установлено количество, которое нужно показывать.
     
  15. Aly

    Aly Новичок

    С нами с:
    7 дек 2016
    Сообщения:
    1
    Симпатии:
    0
    Если вам не сложно можете выложить свой пример.
    Спасибо.
     
  16. askanim

    askanim Активный пользователь

    С нами с:
    7 апр 2016
    Сообщения:
    2.192
    Симпатии:
    166
    Адрес:
    GABRIEL
    Короче вчера чё то сел писать пагинацию для своего проекта... Сильно в детали не уходил. И есть местами дублёж кода из-за того что всё писал в контроллере, а после из-за не достатка времени просто побыстрому пробросил всё в функцию. Но кому не лень может убрать дублёж и разделить всю функцию ещё на под функции а так в студию класс Pagination.
    PHP:
    1. <?php
    2. /**
    3. * Created by PhpStorm.
    4. * User: askanim
    5. * Date: 13.09.17
    6. * Time: 9:44
    7. */
    8.  
    9. namespace Application\System\Facade;
    10.  
    11.  
    12. class Pagination
    13. {
    14.     private $start = 1;
    15.     private $end = Null;
    16.     private $countRows = Null;
    17.     private $currentPage = Null;
    18.     private $countPages = Null;
    19.     private $nextPage = 1;
    20.     private $prevPage = 1;
    21.     private $allPage = 3;
    22.     private $error = [];
    23.     private $first = [];
    24.     private $last = [];
    25.     private $maxRow = 6;
    26.     public function __construct($countRows, $currentPage, $nextPage, $prevPage, $maxRow = 6)
    27.     {
    28.         if (!is_int($countRows) or !is_int($currentPage) or !is_int($nextPage) or !is_int($prevPage))
    29.             $this->error[] = 'input argument not integer';
    30.  
    31.         if (is_int($maxRow)) $this->maxRow = $maxRow;
    32.  
    33.         $this->countRows = $countRows;
    34.         $this->currentPage = $currentPage;
    35.         $this->nextPage = $nextPage;
    36.         $this->prevPage = $prevPage;
    37.  
    38.         $this->countPages = ceil($countRows/$maxRow);
    39.         $this->end = $this->countPages;
    40.         $this->allPage = ($this->nextPage+$this->prevPage)+1;
    41.  
    42.     }
    43.     public function getError () {
    44.         return $this->error;
    45.     }
    46.  
    47.     public function getPagination () {
    48.         $newPageArray = [];
    49.         if($this->start == $this->end) {
    50.             $newPageArray[] = [
    51.                 'numberPage' => 1,
    52.                 'current' => 1
    53.             ];
    54.         }
    55.         if($this->countPages > ($this->allPage)) {
    56.             if($this->currentPage == $this->start) {
    57.                 $this->last = [
    58.                     'number' => $this->end,
    59.                     'active' => 0
    60.                 ];
    61.                 for ($i=$this->currentPage;$i<=$this->allPage;$i++) {
    62.                     $newPageArray[$i]['numberPage'] = $i;
    63.                     if ($i==$this->currentPage){
    64.                         $newPageArray[$i]['current'] = 1;
    65.                     }
    66.                     else {
    67.                         $newPageArray[$i]['current'] = 0;
    68.                     }
    69.                 }
    70.             }
    71.             if ($this->currentPage == $this->end) {
    72.                 $this->first['number'] = $this->start;
    73.                 $this->first['active'] = 0;
    74.                 $all = $this->currentPage - $this->all;
    75.                 for ($i=$this->currentPage;$i>$all;$i--) {
    76.                     $newPageArray[$i]['numberPage'] = $i;
    77.                     if ($i==$this->currentPage){
    78.                         $newPageArray[$i]['current'] = 1;
    79.                     }
    80.                     else {
    81.                         $newPageArray[$i]['current'] = 0;
    82.                     }
    83.                 }
    84.             }
    85.             if ($this->currentPage > $this->start and $this->currentPage < $this->end) {
    86.                 $this->first['number'] = $this->start;
    87.                 $this->first['active'] = 0;
    88.                 $this->last['number'] = $this->end;
    89.                 $this->last['active'] = 0;
    90.                 $iter = 0;
    91.                 $prevIter = 1;
    92.                 $nextIter= 1;
    93.                 for ($i=0;$i<$this->prevPage;$i++){
    94.                     $p = $this->currentPage - $prevIter;
    95.                     if ($p == $this->start) break;
    96.                     $newPageArray[$iter]['numberPage'] = $p;
    97.                     $iter++;
    98.                     $prevIter++;
    99.                 }
    100.                 $newPageArray = array_reverse($newPageArray);
    101.                 $iter++;
    102.                 $newPageArray[$iter]['numberPage'] = $this->currentPage;
    103.                 $newPageArray[$iter]['current'] = 1;
    104.                 for ($i=0;$i<$this->nextPage;$i++) {
    105.                     $iter++;
    106.                     $n = $this->currentPage + $nextIter;
    107.                     if($n == $this->end) break;
    108.                     $newPageArray[$iter]['numberPage'] = $n;
    109.                     $nextIter++;
    110.                 }
    111.             }
    112.         }
    113.         else{
    114.             for ($i=0;$i<$this->countPages;$i++) {
    115.                 $newPageArray[$i]['numberPage'] = $i+1;
    116.                 $n = $i+1;
    117.                 if ($this->currentPage == $n) {
    118.                     $newPageArray[$i]['current'] = 1;
    119.                 }else {
    120.                     $newPageArray[$i]['current'] = 0;
    121.                 }
    122.             }
    123.  
    124.         }
    125.         return $newPageArray;
    126.     }
    127.     public function getLast () {
    128.         return $this->last;
    129.     }
    130.     public function getFirst () {
    131.         return $this->first;
    132.     }
    133.  
    134. }
    --- Добавлено ---
    Когда в таблице много строк, и общее число выдаваемых страницы уходит за 20 и далее. Выводить все страницы навигации глупо. Поэтому в моём классе предусмутрены произвольно задаваемые плавающие числа
    PHP:
    1. $this->prevPage
    и
    PHP:
    1. $this->nextPage
    В результате чего мы получаем центральную страницу и несколько страниц от неё вперёд и назад.
    А так же мы имеем свойства Класса как first и last
    Что это значит?
    Это информация о первой и последней странице в ней всего два параметра
    номер самой страницы и активная она или нет.
    Так же скажу Что когда этим массивы пусты это означает что. Текущая страница равна первой или последней в зависимости от пустоты массива.
     
    #241 askanim, 14 сен 2017
    Последнее редактирование: 14 сен 2017
  17. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.044
    Симпатии:
    165
    Поубивать бы тех людей, кто делает автоматическую пагинацию, например, как в ленте вконтакте или в инстаграмме. Листаю я 20 минут, случайно не туда нажал, страница перезагрузилась и триндец.
     
  18. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.044
    Симпатии:
    165
    Помогите, сейчас не выводится первая запись, то есть выводится не с 0, а с 1, почему так?

    PHP:
    1. $count = 1; //кличество записей на страницу
    2.    
    3.    
    4.    
    5.     if(!empty($_GET['page'])) {
    6.         $start = $_GET['page'] * $count;
    7.     }
    8.     else {
    9.         $start = 0;
    10.     }
    11.    
    12.     $countRec = "SELECT COUNT(id) AS count FROM records";
    13.     $countRes =  mysqli_query($link, $countRec) or die(mysqli_error($link));
    14.     $res = mysqli_fetch_assoc($countRes);
    15.     $resZap =  $res['count'] / $count; // количество всех статей
    16.    
    17.    
    18.     //--> код пагинатора
    19.    
    20.    
    21.     mysqli_query($link, "SET NAMES 'utf8'");
    22.    
    23.     $allRecord = "SELECT * FROM `records` LIMIT " . $start.  ", " . $count;
    PHP:
    1. if($start - 4 > 0) $page4left = '<a href=?page='. ($start - 4) .'>'. ($start - 4) .'</a> ';
    2.                 else $page4left = null;
    3.                
    4.                 if($start - 3 > 0) $page3left = '<a href=?page='. ($start - 3) .'>'. ($start - 3) .'</a> ';
    5.                 else $page3left = null;
    6.                 if($start - 2 > 0) $page2left = '<a href=?page='. ($start  - 2) .'>'. ($start - 2) .'</a> ';
    7.                 else $page2left = null;
    8.                 if($start - 1 > 0) $page1left = '<a href=?page='. ($start - 1 ) .'>'. ($start - 1) .'</a> ';
    9.                 else $page1left = null;
    10.                
    11.                
    12.                 if($start + 1 <= $resZap) $page1right = '<a href=?page='. ($start + 1) .'>'. ($start + 1) .'</a> ';
    13.                 else $page1right = null;
    14.                
    15.                 if($start + 2 <= $resZap) $page2right = '<a href=?page='. ($start + 2) .'>'. ($start + 2) .'</a> ';
    16.                 else $page2right = null;
    17.                 if($start + 3 <= $resZap) $page3right = '<a href=?page='. ($start + 3) .'>'. ($start + 3) .'</a> ';
    18.                 else $page3right = null;
    19.                 if($start + 4 <= $resZap) $page4right = '<a href=?page='. ($start + 4) .'>'. ($start + 4) .'</a> ';
    20.                 else $page4right = null;
    21.                
    22.                
    23.                 echo $page4left . $page3left . $page2left . $page1left . ' ' . $start .' ' . $page1right . $page2right  . $page3right  . $page4right;
     
  19. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.162
    Симпатии:
    1.761
    Адрес:
    :сердА
    Эхехе..китайский код, ну приехали. Для начала - отрефактори второй выложенный код на нормальные функции хотя бы. А во-вторых, подключи дебаггер и протрейси логику своего кода построчно, проверяя каждый шаг и переменные в рантайме. Этот метод поиска ошибок гораздо эффективнее надежды на телепатов из интернета, гадающих по обрывкам кода.
     
    askanim и Dimon2x нравится это.
  20. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.044
    Симпатии:
    165
    Вот мой пагинатор, оцените

    PHP:
    1. $num = 2; //кличество записей на страницу
    2.    
    3.    
    4.     if(!empty($_GET['page'])) { // 0 это пусто, так что сработает else
    5.         $page = $_GET['page'];
    6.     }
    7.    
    8.     else {
    9.         $page = 1;
    10.     }
    11.    
    12.     $start = $page * $num - $num; //если не отнять 1, то отсчёт будет не с 1, а со 2
    13.    
    14.     $countRec = "SELECT COUNT(id) AS count FROM subject";
    15.     $countRes =  mysqli_query($link, $countRec) or die(mysqli_error($link));
    16.     $resCount = mysqli_fetch_assoc($countRes);
    17.    
    18.     //если сделать без выборки, то некоторые штуки перемешаются (*)
    19.     $sql = "SELECT
    20.        subject.id,
    21.        subject.title,
    22.        subject.description,
    23.        subject.author,
    24.        subject.data,
    25.  
    26.    COUNT(answers.subject_id) AS countAnswer
    27.    FROM subject LEFT JOIN answers
    28.    on subject.id = answers.subject_id GROUP BY subject.title ORDER BY subject.id LIMIT " . $start.  ", " . $num;
    29.    
    30.     $total = intval(($resCount['count'] - 1) / $num) + 1;
    31.    
    32.  
    33.     $query = mysqli_query($link, $sql) or die(mysqli_error($link));
    PHP:
    1. <?php
    2.  
    3. //цифра 3 это количество следующих страниц
    4.  
    5. if(!empty($_GET['page'])){
    6.  
    7.     if(($_GET['page'] + 3) <= $total) {
    8.         $countPag = $_GET['page'] + 3;
    9.     }
    10.     else {
    11.         $countPag = $total;
    12.     }
    13.  
    14.     $prev = $_GET['page'] - 1;
    15.     if($_GET['page'] != 1) {
    16.         echo '<a href=?page='. $prev .'>Назад</a>';
    17.     }
    18.  
    19.     if($_GET['page'] > 1) { //это для предыдущих страниц (можно удалить полностью условие, тогда их не будет)
    20.         $prevPage = $_GET['page'] - 1;
    21.         $arr = [];
    22.         for($j = $prevPage; $j >= 1; $j--) {
    23.             $arr[] = $j;
    24.         }
    25.         $newArr = array_reverse($arr);
    26.         $output = array_slice($newArr, -3, 3);
    27.        
    28.         foreach($output as $key => $val) {
    29.             echo '<a href=?page='.$val.'>'. $val .'</a>';
    30.         }
    31.        
    32.     }
    33.  
    34.     for($i = $_GET['page']; $i <= $countPag; $i++) {
    35.         if($_GET['page'] == $i) {
    36.                 echo '<span class="active">' . $i .'</span>';
    37.         }
    38.         else {
    39.             echo '<a href=?page='.$i.'>'. $i .'</a>';
    40.         }
    41.     }
    42.        
    43.     $next = $_GET['page'] + 1;
    44.        
    45.        
    46.     if($_GET['page'] != $total) {
    47.         echo '<a href=?page='. $next .'>Далее</a>';
    48.     }
    49. }
    50.    
    51. else {
    52.     for($i = 1; $i <= 3; $i++) {
    53.         if($i == 1) {
    54.             echo '<span class="active">' . $i .'</span>';
    55.         }
    56.         else {
    57.             echo '<a href=?page='.$i.'>'. $i .'</a>';
    58.         }
    59.     }
    60.     echo '<a href=?page=2>Далее</a>';
    61. }
    62. ?>
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.162
    Симпатии:
    1.761
    Адрес:
    :сердА
  22. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.044
    Симпатии:
    165
    Копипаст. А не надо?
     
  23. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.162
    Симпатии:
    1.761
    Адрес:
    :сердА
    1) Сначала научись сам кодить, а не копипастить, а потом уже выкладывай решения свои на публику.
    2) А ты вопрос этот сам себе не задавал? Ну вот просто "а зачем делать die(mysqli_error)"? В чем смысл этого?
    В чем вообще смысл убивать скрипт при первом же непрошедшем запросе?
    Ну вот я на твоем сайте сижу и что-то вот пошло не так и запрос завалился. И что мне, простому пользователю, даст твое сообщение об ошибке на странице?
    3) Зачем это вот countRes и resCount. Мб можно иначе сделать? Или тоже копипаста?
     
    askanim нравится это.
  24. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.044
    Симпатии:
    165
    я только die скопипастил