xanter1984
Новичок
Добрый день. Существует сайт (мониторинг игровых серверов) в котором есть услуги которые можно приобрести для игрового сервера. Вот хочу сделать скрипт для отправки писем пользователям на ихн мыло за 3 дня до конца услуги. Все вроде понятно но возникли проблемы с запросом.
Таблица: `lm_list`- здесь вся инфа сервера
(`id`- ид сервера,
`ip`- ip сервера,
`q_port` - порт сервера,
`end`,`end_month`,`end_line` - Услуги и сроки завершения).
Таблица: `lm_users` - здесь вся инфа пользователей
(`id`- ид пользователя,
`name`- имя пользователя
`email`- мыло пользователя).
Таблица: `lm_myservers` - здесь показана привязка сервера и пользователя
(`uid`- ид пользователя,
`sid``- ид сервера ).
Рылся копался ковырялся и создал php страничку.
с запросом.
Но проблема в том что `uid` - (ид пользователя в таблице `lm_list` нету. Добавив руками ее в таблицу и указав ид пользователя скрипт срабатывает и отправляет письма.
Но нужен запрос сделать так чтоб затронуть все таблицы чтоб скрипт срабатывал.
Таблица: `lm_list`- здесь вся инфа сервера
(`id`- ид сервера,
`ip`- ip сервера,
`q_port` - порт сервера,
`end`,`end_month`,`end_line` - Услуги и сроки завершения).
Таблица: `lm_users` - здесь вся инфа пользователей
(`id`- ид пользователя,
`name`- имя пользователя
`email`- мыло пользователя).
Таблица: `lm_myservers` - здесь показана привязка сервера и пользователя
(`uid`- ид пользователя,
`sid``- ид сервера ).
Рылся копался ковырялся и создал php страничку.
с запросом.
Код:
<?php
if(mysql_connect("host", "dbname", "dbpassword"))
{
echo 'connection ok';
}
else
{
echo 'connection error';
}
if(mysql_select_db("dbname"))
{
echo 'select ok';
}
else
{
echo 'select error';
}
// за сколько дней до окончания услуги будем оповещать
$days = 3;
$t=time();
$name = '';
$q=mysql_query('
SELECT
`id`,
`uid`
`ip`,
`q_port`,
`end`,
`end_month`,
`end_line`
FROM
`lm_list`
WHERE
(((`end`<\''.($t+$days*60*60*24).'\') AND(`end`>\''.$t.'\')) AND (`golos`>\'9998\')) OR
(((`end_line`<\''.($t+$days*60*60*24).'\') AND(`end_line`>\''.$t.'\')) AND (`line`=1)) OR
(((`end_month`<\''.($t+$days*60*60*24).'\') AND(`end_month`>\''.$t.'\')) AND (`month`=1))
');
if(!$q)
{
echo 'Query error 1';
}
while ($r = mysql_fetch_assoc($q))
{
$tvc = $t+$days*60*60*24;
if (($r['end'] < $tvc) && ($r['end'] > $t))
{
$name = 'VIP';
}
elseif (($r['end_line'] < $tvc) && ($r['end_line'] > $t))
{
$name = 'Выделение цветом';
}
elseif (($r['end_month'] < $tvc) && ($r['end_month'] > $t))
{
$name = 'TOP';
}
notify($r['uid'], $r['ip'], $r['q_port'], $name);
}
function notify($u, $ip, $p, $name) {
// set mail info
$title = 'Заканчивается срок действия услуги - '.$name.'.';
$msg = 'Здравствуйте, %s. Оповещаем Вас о том, что у Вашего сервера %s заканчивается срок действия услуги - '.$name.'.';
// get user info
$q=mysql_query('SELECT `email`,`name` FROM `lm_users` WHERE `id`=\''.$u.'\'');
$r=mysql_fetch_assoc($q);
// send mail
$headers= "MIME-Version: 1.0\r\n";
$headers .= "From: Оповещение Мониторингr <no-reply@мониторинг>\r\n";
return mail($r['email'], $title, sprintf($msg, $r['name'], "http://мониторинг/info/".$ip . ':' . $p, $ip . ':' . $p), $headers);
}
?>
Но нужен запрос сделать так чтоб затронуть все таблицы чтоб скрипт срабатывал.