<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Pagination на PHP

Pagination на PHP

Когда-то я писал статью про создание навигации по страницам. В этой статье я рассказывал, как получить набор данных из таблицы БД, соответствующей выбранной пользователем странице. В этой же статье мы разберём вывод Pagination на PHP. Pagination - это список самих страниц. В Интернете есть различные варианты, но все они страдают одним - огромное количество кода для создания бесконечного числа вариантов. Но Вам разве нужна бесконечность? Вам нужен только 1 вариант, который и будет стоять на сайте. В этой статье мы с Вами создадим относительно сложный pagination, но при этом кода будет совсем не много.

Чтобы создать Pagination на PHP, нам необходимо иметь на входе несколько параметров:

  • count_pages - количество страниц.
  • active - текущая активная страница.
  • count_show_pages - количество отображаемых страниц. Например, если будет 1000 страниц, то вывести их все весьма проблемно. Поэтому отображаться будет только заданное количество в этом параметре.
  • url - адрес страницы, для которой и создаётся Pagination.
  • url_page - адрес страницы с параметром page без значения на конце. Например, "/abc.php?func=create&amp;page=".

Теперь мы можем создавать Pagination, вот так это выглядит на PHP:

<?php
  /* Входные параметры */
  $count_pages = 50;
  $active = 15;
  $count_show_pages = 10;
  $url = "/index.php";
  $url_page = "/index.php?page=";
  if ($count_pages > 1) { // Всё это только если количество страниц больше 1
    /* Дальше идёт вычисление первой выводимой страницы и последней (чтобы текущая страница была где-то посредине, если это возможно, и чтобы общая сумма выводимых страниц была равна count_show_pages, либо меньше, если количество страниц недостаточно) */
    $left = $active - 1;
    $right = $count_pages - $active;
    if ($left < floor($count_show_pages / 2)) $start = 1;
    else $start = $active - floor($count_show_pages / 2);
    $end = $start + $count_show_pages - 1;
    if ($end > $count_pages) {
      $start -= ($end - $count_pages);
      $end = $count_pages;
      if ($start < 1) $start = 1;
    }
?>
  <!-- Дальше идёт вывод Pagination -->
  <div id="pagination">
    <span>Страницы: </span>
    <?php if ($active != 1) { ?>
      <a href="<?=$url?>" title="Первая страница">&lt;&lt;&lt;</a>
      <a href="<?php if ($active == 2) { ?><?=$url?><?php } else { ?><?=$url_page.($active - 1)?><?php } ?>" title="Предыдущая страница">&lt;</a>
    <?php } ?>
    <?php for ($i = $start; $i <= $end; $i++) { ?>
      <?php if ($i == $active) { ?><span><?=$i?></span><?php } else { ?><a href="<?php if ($i == 1) { ?><?=$url?><?php } else { ?><?=$url_page.$i?><?php } ?>"><?=$i?></a><?php } ?>
    <?php } ?>
    <?php if ($active != $count_pages) { ?>
      <a href="<?=$url_page.($active + 1)?>" title="Следующая страница">&gt;</a>
      <a href="<?=$url_page.$count_pages?>" title="Последняя страница">&gt;&gt;&gt;</a>
    <?php } ?>
  </div>
<?php } ?>

Сразу скажу, что кода хоть и немного, но он достаточно сложный для новичков. Года 3 назад я потратил очень много времени, чтобы сделать нечто подобное и тогда кода получилось раза в 2 больше.

А дальше можно этот Pagination через CSS украшать так, как Вы пожелаете. Можно и вёрстку изменить при желании (например, вместо угловых скобок "Предыдущая страница" и аналогичных поставить красивые картинки), главное, не трогать PHP-код.

Вот такой весьма удобный Pagination реализован на этом сайте, а так же на некоторых моих других сайтах.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (19):

Grey Grey 12.11.2013 16:49:54

а скрипт вообше рабочий? нажимал на разные ссылки активной остатся 15 сераница

Ответить

area_69 area_69 12.11.2013 18:21:42

А к БД подключался??

Ответить

Grey Grey 12.11.2013 18:28:54

а причем тут бд?

Ответить

area_69 area_69 12.11.2013 21:37:50

в первом предложении по ссылке пройди...

Ответить

Admin Admin 12.11.2013 21:32:12

Данный скрипт лишь генерирует pagination на основе входных параметров. Никакого вывода контента тут нет и быть не может. По сути, данная статья - это продолжение той, о которой было сказано в первом предложении.

Ответить

Grey Grey 12.11.2013 21:59:50

про контент понятно. не понятно то что при нажатии на ссылку на другую страницу например: 10 стр. Почему активной остается 15 стр.

Ответить

Admin Admin 13.11.2013 11:57:31

Потому что $active = 15;

Ответить

prog prog 14.11.2013 19:52:02

Здраствуйте, Михаил.У меня такая проблема не могу вывести постраничную навигацию.Как можно вывести такой код foreach($news as $item):?> <a href="index.php?view=news&t=<?=$item['title_url'];?>"><img src="userfiles/news/<?=$item['img'];?>" alt="<?=$item['title'];?>" width="200" height="120" /></a> <?endforeach;}?>

Ответить

Admin Admin 14.11.2013 21:15:46

foreach($news as $item) { ?> а в конце <?php } ?> - лучше так делать, вместо endforeach.

Ответить

Lerd Lerd 15.11.2013 21:18:15

Спасибо огромное за данную статью! Долго время хотел сделать себе хороший Pagination. Собственный занимал в 5 раз больше места и был неудобен.

Ответить

prog prog 27.11.2013 09:00:50

Здраствуйте.Я сделал постраничную навигацию, но у меня ошибки появляется Warning: Missing argument 3 for select_data(), как это исправить.

Ответить

tikkiwiki tikkiwiki 27.11.2013 10:19:47

Абай Калдыбаев, в службу поддержки пишите.

Ответить

CALIJKA CALIJKA 02.12.2013 17:00:15

Здравствуйте! Скажите, пожалуйста, как задать и обратиться к $active, имея движок описанный в курсе php и mysql. там функция getPagination создает список ссылок, не пойму как определить ссылку активной.

Ответить

tikkiwiki tikkiwiki 02.12.2013 19:50:56

Здравствуйте, Александр. для обращения используйте "$this->" Пример: $this->name - вызывает переменную "name", объявленную и используемую внутри класса.

Ответить

CALIJKA CALIJKA 03.12.2013 17:04:03

Я не могу понять, как мы получаем переменную $active, откуда её вытаскивать? Допустим мы находимся на второй странице ($active = 2 в данный момент), переходим на четвертую страницу (мы должны сделать $active = 4 и т.д.)

Ответить

tikkiwiki tikkiwiki 04.12.2013 10:39:05

Все верно, Александр. В active попадает наша активная страница на данный момент. Каким способом ее вытаскивать, решать Вам.

Ответить

CALIJKA CALIJKA 04.12.2013 22:16:10

вот я и хотел узнать хотя бы один способ...

Ответить

(Алекс) (Алекс) 23.08.2014 00:59:51

можно через get-параметр

Ответить

serega_seregin serega_seregin 11.01.2014 11:39:23

Добрый день. Хотелось бы узнать, для чего мы инициализируем перем. right, если дальше мы ее не пользуем?

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.