PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире — PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

Подробнее

Подписка

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

Подписаться

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

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

Бесплатный онлайн-семинар

Как создать профессиональный Интернет-магазин

После семинара:

— Вы будете знать, как создать Интернет-магазин.

— Вы получите бесплатный подарок с подробным описанием каждого шага.

— Вы сможете уже приступить к созданию Интернет-магазина.

Записаться
Другие курсы

Навигация по страницам на PHP

Если у Вас динамический сайт, то, наверняка, Вам потребуется сделать навигацию по страницам. Допустим, если у Вас блог и у Вас есть хотя бы 50 записей, то согласитесь, что на одной странице Вы их все не выведите. Такая страница будет огромной и бестолковой. И в этой статье я расскажу, как сделать навигацию по страницам на PHP.

В основе лежат оператор LIMIT и GET-параметр. Вот примерный алгоритм работы:

  1. Получить значение GET-параметра, отвечающего за номер страницы.
  2. На основании значения переданного номера страницы, вывести из базы данных только те записи, которые должны находиться на этой странице.
  3. Вывести получившиеся записи на страницу.

Чтобы стало понятнее, давайте приведу стандартный код шаблона, который реализует подобный алгоритм:

<?php
  $count = 5;// Количество записей на странице
  $page = $_GET["page"];// Узнаём номер страницы
  $mysqli = new mysqli("localhost", "root", "", "db");// Подключаемся к базе данных
  $shift = $count * ($page - 1);// Смещение в LIMIT. Те записи, порядковый номер которого больше этого числа, будут выводиться.
  $result_set = $mysqli->query("SELECT * FROM `articles` LIMIT $shift, $count");// Делаем выборку $count записей, начиная с $shift + 1.
  /* Выводим результат */
  while ($row = $result_set->fetch_assoc()) {
    print_r($row);
    echo "<br />";
  }
?>

Как видите, всё более, чем прозрачно. И сделать навигацию страниц на PHP совсем не трудно. Но теперь главная сложность будет состоять в том, чтобы натянуть эту базу на свой движок. Но здесь уже, увы, только Вы сможете разобраться в коде своего движка.

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

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

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

Screen
30.01.2012 15:42:11

А как можно реализовать номера страниц как на картинке в шапке темы?

Ответить

Admin
30.01.2012 15:45:32

Можно, здесь принцип простой: выводить просто ссылки: <a href=»index.php?page=5″>5</a>. Вместо 5 вывести в цикле все необходимые страницы. Но здесь простая база, но если хочется делать какой-то сдвиг (допустим, на 1-й странице, можно перейти с 1-й по 10-ю страницу, а на 10 страницы, например, с 5-й по 15-ю), то здесь уже всё гораздо сложнее, и в двух строчках никак не опишешь. Тут надо просто сесть и подумать.

Ответить

Я вот все сделал, но у меня выводит так: Array ( [id] => 1 [theme] => test [newa] => text text text [newb] => text1 text1 text [user] => user [cat] => 3 ) Почему выводит название полей и т.д?

Admin
05.02.2012 13:36:31

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

Ответить

Screen
05.02.2012 19:55:41

А как именно их можно обработать? Можно пример, а то я их ранее не разу не обрабатывал.

Ответить

Admin
05.02.2012 20:00:19

Почитайте про работу с массивами в PHP. Затем внутрь HTML просто в нужные места подставляйте все данные из массива.

Ответить

Arthur
20.03.2012 01:20:31

«Можно, здесь принцип простой: выводить просто ссылки: <a href=»index.php?page=5″>5</a>. Вместо 5 вывести в цикле все необходимые страницы.» Здравствуйте, Михаил! А можно пример. А то я не совсем понял.

Ответить

Admin
20.03.2012 05:40:23

for ($i = 1; $i <= 5; $i++) echo «<a href=’index.php?page=$i’>$i</a>»;

Ответить

Arthur
20.03.2012 11:01:21

Спасибо!

Ответить

RussianPro
03.06.2012 16:50:32

Fatal error: Call to a member function fetch_assoc() on a non-object in X:\home\test1.ru\www\index.php on line 9 У меня как всегда всё через жопу.

Ответить

Admin
03.06.2012 16:59:36

Скорее всего, ошибка в запросе.

Ответить

RussianPro
03.06.2012 17:00:23

я уже разобрался в чём дело

Ответить

Михаил, у меня проблема такого плана. Запрос по нескольким полям с WHERE с формы плюс навигация. Отдельно все идеально работает, и запрос и навигация — вместе никак. Т. е. первая страничка нормально отображается, а при переходе на следующую все… Я так понимаю, проблема в том что не запоминатся результаты запроса. Как это решить? Через сесии?

Amicus
27.06.2012 12:08:37

Михаил, спасибо! Пробывал, но не выходит. Понимаю, что проблема в голове, но какая есть… Реализовал через сесии — работает. Наверное для такого способа реализации есть противопоказания?

Ответить

Admin
27.06.2012 12:22:17

Можно и через сессии.

Ответить

RussianPro
08.07.2012 18:22:49

Не могли бы Вы показать, как исправили эту проблему? У меня тоже самое…

Ответить

den98
10.01.2013 20:33:13

Добрый вечер Михаил. Помогите код не проходит валидацию: Line 318, Column 73: an attribute value specification must be an attribute value literal unless SHORTTAG YES is specified …iv class=»pstrnav»><b>1</b> | <a href=gallery.php?cat=&page=2>2</a> | <a href=… ✉ Line 318, Column 84: an attribute value must be a literal unless it contains only name characters …strnav»><b>1</b> | <a href=gallery.php?cat=&page=2>2</a> | <a href=gallery.php… ✉ You have used a character that is not considered a «name character» in an attribute value. Which characters are considered «name characters» varies between the different document types, but a good rule of thumb is that unless the value contains only lower or upper case letters in the range a-z you must put quotation marks around the value. In fact, unless you have extreme file size requirements it is a very very good idea to always put quote marks around your attribute values. It is never wrong to do so, and very often it is absolutely necessary.

Ответить

Admin
10.01.2013 21:36:26

Надо писать не &, а &amp; в ссылках.

Ответить

den98
11.01.2013 22:49:48

Спасибо валидацию прошел. Если интересно можете оценить сайт www.clearsky62.ru Буде рад критике. Это мое первое детище во многом благодаря Вашему сайту.

Ответить

Михаил, точно не знал в какой раздел написать и решил написать тут. Проходя Ваш курс PHP и MySql с нуля до Гуру есть ошибка в функции getPagination(); Точнее в цикле: for($i = 2; $i < $count_pages; $i++) это ваш код, он не выводит последнюю страницу. Ошибка содержится в условии вот правильный код: for($i = 2; $i <= $count_pages; $i++) Это код из урока: protected function getPagination ($count, $count_on_page, $link) { $count_pages = ceil($count / $count_on_page); $sr[«number»] = 1; $sr[«link»] = $link; $pages = $this->getReplaceTemplate($sr, «number_page»); $sym = (strpos($link, «?») !== false)? «&amp;»: «?»; for($i = 2; $i < $count_pages; $i++) { $sr[«number»] = $i; $sr[«link»] = $link.$sym.»page=$i»; $pages .= $this->getReplaceTemplate($sr, «number_page»); } $els[«number_pages»] = $pages; return $this->getReplaceTemplate($els, «pagination»); print_r ($count_pages); } P.S. Надеюсь кто изучает будет полезно знать так, как я искал не один час. Хочу выразить Вам свою благодарность за то что Вы делаете, очень познавательно и интересно РЕКОМЕНДУЮ ВСЕМ!!!

Admin
05.05.2013 11:21:09

Напишите мне на myrusakov@gmail.com

Ответить

AntDant
17.06.2013 04:04:50

а как можно сделать что бы количество страниц само добавлялось. Если например записей больше чем на 5 страницах ? 1.3.5.6 и далее само

Ответить

Admin
17.06.2013 10:58:09

Данный скрипт автоматически добавит новые страницы.

Ответить

rakegent
21.07.2013 01:48:07

спасибо за бесплатные уроки, вот только в артикле много статей, вот уже два дня как мучаюсь постраницу не могу сделать на пхп, пробовал добавить в артикл и интро-артикл но никак, дизайн по уроку сделан, не знаю что делать???

Ответить

rakegent
21.07.2013 01:56:16

на дипломку задание с института, сайт isrip.tk только начил делать и застрял, меню «состав института» там статей надо на постраничку делить, вроде на чистом шаблоне делается, с помошью скриптов, а применить к своему никак не получается, помогите плииз!??

Ответить

Admin
21.07.2013 18:10:39

В статье все довольно доступно объянено. Либо посмотрите в видеоуроках, там это тоже разбиралось.

Ответить

rakegent
25.07.2013 07:20:17

уже неделю мучаюсь, никак не получается, замучался, у меня ошибку выдает на строке while ($row = $result_set->fetch_assoc()) { пробовал добавить в артиклс в директории блокс.но нет,на платном уроке токо лимит указан а что дальше не соображаю. пробовал все, даже 100% ные скрипты не могу установить, помогите прошу

Ответить

Admin
25.07.2013 17:31:41

Как понимаю, у Вас эта ошибка? http://myrusakov.ru/php-fetchassoc.html

Ответить

gala_78
24.08.2013 22:38:50

а как «натянуть эту базу» на тот сайт, что в вашем бесплатном курсе по PHP? На конкретном примере было бы легче разобраться чайникам. Спасибо

Ответить

prog
31.10.2013 23:10:23

Здраствуйте, Михаил.Как можно сделать постраничную навигацию на этот код index.php?view=video&t=<?=$item[‘title_url’];?> userfiles/video/<?=$item[‘img’];?>

Ответить

Admin
01.11.2013 10:52:47

Добавлять параметр page в ссылку.

Ответить

prog
02.11.2013 10:19:37

Здраствуйте, Михаил.Как можно сделать постраничную навигацию на этот код foreach($video as $item):?> <div class=»video»> <a href=»index.php?view=video&t=<?=$item[‘title_url’];?>»><img src=»userfiles/video/<?=$item[‘img’];?>» alt=»<?=$item[‘title’];?>» width=»200″ height=»120″ /></a> <div class=»video-title»><a href=»index.php?view=video&t=<?=$item[‘title_url’];?>»><div class=»video-title»><?=$item[‘title’];?></div></a></div> </div> <?endforeach;}?> Помогите пожалуйста.

Ответить

Oleg-yak1
12.07.2015 16:44:14

for ($i = 1; $i <= 5; $i++) echo «<a href=’index.php?page=$i’>$i</a>»; использовал данный код для вывода кнопок с низу выдачи БД здесь работает хорошо. Вопрос: Как сделать ограничение на вывод кнопок вида 1 …10 11 <b>12</b> 13 14… 100 ?? И еще как сделать что бы выбранная страница всегда заключалась в тег Б тоесть выделялась чем то

Ответить

sheroz-06
17.05.2017 18:40:32

Здравствуйте, как определить активную страницу и задать стил к нему. Например 1 2 3 <span class=active>4</span> 5. Заранее спасибо.

Ответить

Закладка Постоянная ссылка.

Комментарии запрещены.