<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

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

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

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

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

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

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

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

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

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

Форум сайта MyRusakov.ru

Не получается сделать подписку
12.04.2013 01:16:53 Не получается сделать подписку Сообщение #1
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

Здравствуйте, я решил сделать собственную подписку, чтобы не зависеть от feedburner, а то его закрывать собираются я читал...

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

Короче сам код:
<?php
require_once "config.php";
require_once "lib/functions.php";
connectDB();
$result_set = $mysqli->query("SELECT * FROM `$table_subscribe` WHERE `end` = '0' LIMIT 1"; // Получаем 1 неоконченную рассылку
$last_subscribe = $result_set->fetch_assoc(); // Преобразуем result_set в массив
/* Если все рассылки уже отправлены, то смотрим: нет ли новых статей на сайте */
if ($result_set->num_rows == 0) {
$result_set = $mysqli->query("SELECT * FROM `$table_lesson` WHERE `id` > '".$last_subscribe["post_id"]."' LIMIT 1";
if ($result_set->num_rows == 0) exit; // Если ничего нового нет, то просто выходим
$post = $result_set->fetch_assoc(); // Получаем данные о новой статье
$mysqli->query("INSERT INTO `$table_subscribe` (`post_id`, `subscriber_id`, `end`) VALUES ('".$post["id"]."', '0', '0')"; // Добавляем в очередь новую рассылку
exit; // Выходим, а через 10 минут данный скрипт будет снова запущен, и уже пойдёт непосредственно рассылка писем
}
$last_id = $last_subscribe["subscriber_id"]; // Получаем id подписчика, которому было отправлено письмо в последний раз
$result_set = $mysqli->query("SELECT * FROM `$table_subscribers` WHERE `id` > '".$last_id."'";
$count = 0;
while (($row = $result_set->fetch_assoc) !== false) {
$subscriber_id = $row['id'];
$subscriber_name = $row['name'];
$subscriber_email = $row['email'];
$subscriber_date = DateClass::make_date($row['date']);

$result_set_mail = $mysqli->query("SELECT * FROM `$table_lesson` WHERE `id` = '".$last_subscribe["post_id"]."'";
$post_mail = $result_set_mail->fetch_assoc(); // Получаем данные о новой статье

$subject = 'Новая статья на сайте Malinichev.ru';
$message = '
<h1 style = "text-shadow: 1px 0 4px green; color: silver; font-size: 110%;">Malinichev.ru</h1>
<p>Здравствуйте, <strong>'.$subscriber_name.'</strong>!</p>
<br />
<p>На сайте <a href = "http://malinichev.ru/">Malinichev.ru</a> появилась новая статья.</p>
<p>Чтобы <strong>ознакомиться</strong> с новой статьёй, пройдите по ссылке ниже:</p>
<p><a href = "'.$address.'lesson/'.$post_mail['url'].'.html"></a></p>
<br />
<p>С Уважением, Владислав Малиничев и сайт <a href = "http://malinichev.ru/">Malinichev.ru</a>!</p>
<br />
----------------------------------------------------------------------
<br />
<p>Если Вы не желаете больше получать уведомления о новых статьях, то Вы можете отписаться, пройдя по ссылке ниже:</p>
<p><a href = "ссылка">ссылка</a></p>
<p>Дата Вашей подписки: <b>'.$subscriber_date.'</b></p>
';
$headers = "From: Malinichev.ru <malinichev.ru@yandex.ua>\r\nContent-type: text/html; charset=utf-8 \r\n";
mail ($subscriber_email, $subject, $message, $headers);
//mail ('malinichev.ru@yandex.ua', 'Привет', 'Тестируем рассылку', 'From: Malinichev.ru <malinichev.ru@yandex.ua>\r\nContent-type: text/html; charset = utf-8 \r\n');
/* Здесь код для отправки письма через функцию mail() */
$count++;
if ($count == 10) {
$mysqli->query("UPDATE `$table_subscribe` SET `subscriber_id` = '".$subscriber_id."' WHERE `id` = '".$last_id."'"; // Обновляем информацию о последнем подписчике, которому было отправлено письмо
break; // Выходим после 10-ти отправлений
}
}
if ($result_set->num_rows <= 10)
$mysqli->query("UPDATE `$table_subscribe` SET `end` = '1' WHERE `id` = '".$last_id."'"; // Всё отправлено
?>


Помогите плиз, я уже не знаю что делать. Уже всё попробовал...

В базе есть только одна запись, и ошибка мне кажется где то в скрипте, какая-то переменная сбивается...

Вот скрин записи:
Изображение

А вот 4 действуюхщих мыла:

Изображение

Помогите пожалуйста, я уже не знаю что делать, где искать ошибку... ХЕЛП
Профиль Ответить
12.04.2013 01:58:30 Не получается сделать подписку Сообщение #2
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

При ещё одной проверке, я обнаружил что в айди подписчика в цикле пустой, но как это может быть я не знаю. Походу где-то сбивается
Профиль Ответить
12.04.2013 02:05:39 Не получается сделать подписку Сообщение #3
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

Тю блин, Михаил, ошибка была в статье, как же цикл сделает массив если в нём неправильная функция, надо не:
while (($row = $result_set->fetch_assoc) !== false) {
А надо:
while (($row = $result_set_subscribers->fetch_assoc()) !== false) {

Из-за этой ошибки я тут кипишь поднял блин...

Обалдеть, исправьте ошибку.
Профиль Ответить
12.04.2013 11:44:33 Не получается сделать подписку Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

$result_set_subscribers - такой переменной в статье вообще нет, как к ней можно обращаться через fetch_assoc?
Профиль Ответить
12.04.2013 13:04:09 Не получается сделать подписку Сообщение #5
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

Это опечатка, я проверял всё с print_r и забыл убрать, я надеюсь вы увмдили гдн ошибка в статье?
В цикле не fetch_assoc должно быть, а fetch_assoc()
Профиль Ответить
12.04.2013 13:20:17 Не получается сделать подписку Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, вижу. Спасибо, исправил!
Профиль Ответить
12.04.2013 13:26:06 Не получается сделать подписку Сообщение #7
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

Михаил, но всё равно работать отказывается.

В таблице с подписчиками у меня 4 подписчика, В таблице со статьями 44 статьи, а в таблице с самой рассылкой, у меня получается что последний подписчик которому отправлено стоит 0, но end=1 присутсвует, но при этом, следующего айди статьи не попадается как бы, тоесть он ищет только статью под айди 4 и всё, хотя на неё уже стоит end=1. Помогите.
Профиль Ответить
12.04.2013 13:58:34 Не получается сделать подписку Сообщение #8
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

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

В статье напишите новый sql запрос, я просто с ними не очень дружу, но он ив правду не работает.
Профиль Ответить
12.04.2013 14:43:33 Не получается сделать подписку Сообщение #9
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Выведите запрос через echo и скопируйте сюда.
Профиль Ответить
12.04.2013 14:50:15 Не получается сделать подписку Сообщение #10
malina95

malina95

Мастер

Мастер

Дата регистрации:
15.07.2012 07:13:44

Сообщений: 208

SELECT * FROM `portal_subscribe` WHERE `end` = '0' LIMIT 1
SELECT * FROM `portal_lesson` WHERE `id` > '' LIMIT 1
Профиль Ответить