[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Циклы
kss
Ребят, помогите, пожалуйста, с циклом:
есть цикл

while ( $row = mysql_fetch_assoc($result))
{
$k = $row['server_stoptime'] - time();
$clock = round(($k/60/60)-1);
if ( $k < 86400 )
{
$s1=mysql_query("UPDATE `pg_serverlist` SET `email_status` = '1' WHERE
`server_globalid` = '"
.$row['server_globalid']."' ");
}
}
;

Он обновляет записи, удовлетворяющие условию
Затем мне нужно найти e-mail двумя запросами пользователей, записи которых обновились

$result = mysql_query("SELECT `uID` FROM `lm_myserver` WHERE `sID` REGEXP '[[:<:]]".$row['server_globalid']."[[:>:]]'");
while($row = mysql_fetch_assoc($result));
$id=$row['uID'];
$result = mysql_query("SELECT `email` FROM `lm_user` WHERE `id` = ".$id."");
while($row = mysql_fetch_assoc($result));

И разослать им письма

$to = $row['email'] ;
$subject = "Заканчивается раскрутка сервера";
$body ="Для сервера ".$row['server_addr']." услуга 'Раскрутка' будет удалена через ".$clock." часов.\n";
$body .= "C уважением, администрация сайта. \n";
$headers = "Content-type: text/plain; charset=windows-1251\r\n";
$headers .= "From: <".$conf['support_mail'].">\r\n";
mail($to, $subject, $body, $headers);

Как мне все это в цикл загнать?



Спустя 19 минут, 10 секунд (22.03.2012 - 08:50) Visman написал(а):
В запросе, который идет перед
while ( $row = mysql_fetch_assoc($result))
{
$k = $row['server_stoptime'] - time();
$clock = round(($k/60/60)-1);
if ( $k < 86400 )
{
$s1=mysql_query("UPDATE `pg_serverlist` SET `email_status` = '1' WHERE
`server_globalid` = '"
.$row['server_globalid']."' ");
// тут отсылай письмо
}
}
;

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

Спустя 3 минуты, 9 секунд (22.03.2012 - 08:54) kss написал(а):
делал так... приходит только одно письмо, и обновляет одну запись, а должен, пока, две

Спустя 2 минуты, 17 секунд (22.03.2012 - 08:56) kss написал(а):
Вот так делаю

while ( $row = mysql_fetch_assoc($result))
{
$k = $row['server_stoptime'] - time();
$clock = round(($k/60/60)-1);
if ( $k < 86400 )
{
$s1=mysql_query("UPDATE `pg_serverlist` SET `email_status` = '1' WHERE
`server_globalid` = '"
.$row['server_globalid']."' ");
$result = mysql_query("SELECT `uID` FROM `lm_myserver` WHERE `sID` REGEXP '[[:<:]]".$row['server_globalid']."[[:>:]]'");
while($row = mysql_fetch_assoc($result));
$id=$row['uID'];
$result = mysql_query("SELECT `email` FROM `lm_user` WHERE `id` = ".$id."");
while($row = mysql_fetch_assoc($result));
$to = $row['email'] ;
$subject = "Заканчивается раскрутка сервера";
$body ="Для сервера ".$row['server_addr']." услуга 'Раскрутка' будет удалена через ".$clock." часов.\n";
$body .= "C уважением, администрация сайта. \n";
$headers = "Content-type: text/plain; charset=windows-1251\r\n";
$headers .= "From: <".$conf['support_mail'].">\r\n";
mail($to, $subject, $body, $headers);
}
}
;


Спустя 4 минуты, 20 секунд (22.03.2012 - 09:00) Visman написал(а):
while($row = mysql_fetch_assoc($result));

Зачем ; ? Должна фигурная скобка открываться и где-то ниже закрываться.

Спустя 21 минута, 32 секунды (22.03.2012 - 09:22) kss написал(а):
да хоть как!

Спустя 1 минута, 57 секунд (22.03.2012 - 09:24) Visman написал(а):
Цитата (kss @ 22.03.2012 - 14:22)
да хоть как!

В текущем исполнении у тебя циклы отсутствуют!
Цикл это
while($row = mysql_fetch_assoc($result))
{
// тело цикла, которое выполняется для каждой записи
}

Спустя 1 час, 32 минуты, 4 секунды (22.03.2012 - 10:56) kss написал(а):

while ( $row = mysql_fetch_assoc($q))
{
$k = $row['server_stoptime'] - time();
$clock = round(($k/60/60)-1);
if ( $k < 86400 )
{
$s1=mysql_query("UPDATE `pg_serverlist` SET `email_status` = '1' WHERE
`server_globalid` = '"
.$row['server_globalid']."' ");
$q2 = mysql_query("SELECT `uID` FROM `lm_myserver` WHERE `sID` REGEXP '[[:<:]]".$row['server_globalid']."[[:>:]]' LIMIT 1");
while($row2 = mysql_fetch_assoc($q2))
$id=$row2['uID'];
$q3 = mysql_query("SELECT `email` FROM `lm_user` WHERE `id` = ".$id." LIMIT 1");
while($row2 = mysql_fetch_assoc($q3))
$to = $row2['email'] ;
$subject = "Заканчивается раскрутка сервера";
$body ="Для сервера ".$row['server_addr']." услуга 'Раскрутка' будет удалена через ".$clock." часов.\n";
$body .= "C уважением, администрация сайта. \n";
$headers = "Content-type: text/plain; charset=windows-1251\r\n";
$headers .= "From: <".$conf['support_mail'].">\r\n";
mail($to, $subject, $body, $headers);
};
};


Работает. Спасибо всем за ответы
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.