<MyRusakov.ru />

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

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

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

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

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

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

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

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

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

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

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

Как сделать подписку на сайте (V2)

Как сделать подписку на сайте (V2)

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

Так же как и в прошлой версии у Вас должна быть таблица со статьями или постами на блоге. Так же у Вас должна быть таблица подписчиков на обновления и таблица с очередью рассылки.

Таблица со статьями (articles):

  • id - уникальный идентификатор.
  • title - заголовок статьи.
  • text - текст статьи.

Таблица с подписчиками (subscribers):

  • id - уникальный идентификатор.
  • email - e-mail подписчика.

Таблица с очередью рассылки (turn):

  • id - уникальный идентификатор.
  • email - e-mail подписчика, которому нужно отправить сообщение. Вместо него можно использовать subscriber_id, но в целях упрощения понимания, возьмём простейший вариант.
  • article_id - уникальный идентификатор той статьи, по которой нужно отправить уведомление
  • is_send - отправлено письмо или нет.

Разберём код 1-го скрипта, отвечающего за добавление подписчиков в очередь рассылки:

<?php
  $mysqli = new mysqli("localhost", "root", "", "mydb"); // Подключаемся к базе
  $rs = $mysqli->query("SELECT MAX(`article_id`) as `max` FROM `turn`"); // Узнаём id последней отправленной статьи
  $row = $rs->fetch_assoc();
  $last_article_id = $row["max"];
  $rs = $mysqli->query("SELECT `id` FROM `articles` WHERE `id` > '$last_article_id'"); // Берём все новые статьи (то есть те, которые ещё не отправлены)
  $rs_subscribers = $mysqli->query("SELECT * FROM `subscribers`"); // Получаем всех подписчиков
  while (($row = $rs->fetch_assoc()) != false) {
    /* Перебор новых статей */
    $article_id = $row["id"];
    while (($row_subscribers = $rs_subscribers->fetch_assoc()) != false) {
      /* Перебор подписчиков */
      $mysqli->query("INSERT INTO `turn` (`email`, `article_id`, `is_send`) VALUES ('".$row_subscribers["email"]."', '$article_id', '0')"); // Добавляем в очередь рассылки каждого подписчика
    }
  }
  $mysqli->close();
?>

Теперь рассмотрим код 2-го скрипта, отвечающего за непосредственную отправку:

<?php
  $mysqli = new mysqli("localhost", "root", "", "mydb"); // Подключаемся к базе
  $rs = $mysqli->query("SELECT * FROM `subscribers` WHERE `is_send` = '0' ORDER BY `id` LIMIT 10"); // Берём 10 подписчиков, которым ещё не отправлено письмо
  while (($row = $rs->fetch_assoc()) != false) {
    $rs_article = $mysqli->query("SELECT * FROM `articles` WHERE `id`='".$row["article_id"]."'"); // Берём информацию о статье
    $row_article = $rs_article->fetch_assoc();
    $success = mail($row["email"], $row_article["title"], "Появилась новая статья..."); // Отправляем e-mail
    if ($success) $mysqli->query("UPDATE `turn` SET `is_send` = '1' WHERE `id` = '".$row["id"]."'"); // Если e-mail отправлен, то ставим is_send=1, сообщающий о том, что подписчику отправлено письмо
  }
  $mysqli->close();
?>

Теперь самое основное - смысл алгоритма. Скрипт запускается автоматически через cron, анализирует появление новых статей и добавляет сразу же в очередь рассылки всех подписчиков. Далее другой автоматический скрипт просто берёт всех тех, кому ещё не отправлено письмо и отправляет его.

На мой взгляд, данный алгоритм намного яснее и проще для понимания, чем тот, о котором я писал раньше. Сразу говорю, код сырой, так же он не протестированный, поэтому в нём возможны ошибки. Но алгоритм абсолютно верный, он понятный и он рабочий, поэтому пользуйтесь при создании подписки на своём сайте.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

malina95 malina95 22.04.2013 22:11:38

Спасибо, но мне кажется что тот намного проще, хоть и с ошибками. Хотя все ошибки я раскрыл на форуме, но это не главное... Михаил, напишите пожалуйста статью про древовидные комментарии, напишите всё, от формы, php скрипта, и до самого javascript... Сделали бы новую категорию, и назвали бы её "Проекты", и выкладывали бы там статьи разделённые по частям. Вот и сделайте разделённую статью про древовидные комментарии. рады были бы все подписчики и читатели без исключения. Напишите стоящую статью, чтобы мы знали что вы стараетесь именно для нас, и пишите статьи которые мы просим, хоть они и очень сложные и большие.

Ответить

kutep kutep 22.04.2013 22:35:42

Михаил,можно как-то это сделать без PHP и базы данных. Например,через HTML,CSS и java script. Если да то как?

Ответить

lev_100rus lev_100rus 23.04.2013 00:12:19

Мда. Рано вы читаете такие статьи, если не понимаете ещё элементарных вещей. Вернитесь к другим темам. Изучите их. Поймите разницу между сервером и клиентом. Потом уже читайте данную статью. Советую книгу почитать Автор Дмитрий Котеров "PHP5 в подлиннике" хорошая книга.

Ответить

malina95 malina95 23.04.2013 23:46:37

А вы сами читали ее? И в каком формате?

Ответить

lev_100rus lev_100rus 24.04.2013 14:48:18

Конечно читал. в формате DJVU с помощью программы DJVU Reader

Ответить

malina95 malina95 26.04.2013 18:00:21

Мдааааааа........ Купили бы нормальную книгу.,.... В электронном не удобно читать...

Ответить

lev_100rus lev_100rus 26.04.2013 21:38:44

Зато бесплатно;)

Ответить

malina95 malina95 26.04.2013 23:42:13

И то верно, халява всему голова :)

Ответить

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