Mysql Помогите разобраться

xanter1984

Новичок
Добрый день. Существует сайт (мониторинг игровых серверов) в котором есть услуги которые можно приобрести для игрового сервера. Вот хочу сделать скрипт для отправки писем пользователям на ихн мыло за 3 дня до конца услуги. Все вроде понятно но возникли проблемы с запросом.

Таблица: `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);
        }
 
?>
Но проблема в том что `uid` - (ид пользователя в таблице `lm_list` нету. Добавив руками ее в таблицу и указав ид пользователя скрипт срабатывает и отправляет письма.

Но нужен запрос сделать так чтоб затронуть все таблицы чтоб скрипт срабатывал.
 
Сверху