andibrag (12 Март 2015 - 09:17) писал:
А почему не использовать встроенный механизм напоминаний с отправкой на e-mail для конкретного сотрудника в определенное время?
Потому что для этого нужно заводить в каждой строке лишнее поле с адресом получателя, а их может быть несколько и проще их прописать прямо в кроне.
Решение задачи тут:
$result = data_select(281, "status=0 ");
while ($line= sql_fetch_assoc($result)) {
$m1=date("m", strtotime($line['f3941'])); // Вычленяем месяц из даты рождения
$m2=date("m"); // Вычленяем месяц из текущей даты
$d1=date("d", strtotime($line['f3941'])); // Вычленяем день из дня рождения
$d2=date("d"); // Вычленяем день из текущей даты
$d3=date("d.m.Y", strtotime($line['f3941'])); // Формируем дате рождения в привычном формате DD.MM.GGGG
$d4=date("d.m.Y"); // То же для текущей даты
$y1=date("Y", strtotime($line['f3941'])); // Вычленяем год из дня рождения
$y2=date("Y"); // Вычленяем год из текущей даты
$y3=$y2-$y1; // Определяем возраст в годах
if (($m1==$m2) AND ($d1==$d2)) {
$text="<b>СЕГОДНЯ, $d4 ДЕНЬ РОЖДЕНИЯ <br>У НАШЕГО ТОВАРИЩА ".$line['f3911'].". Ему (ей) исполнилось $y3. Поздравить можно по телефону <b>".$line['f16021']."</b>.";
sendmail ("$d4 День рождения у ".$line['f3911'],$text,"adres1@rambler.ru");
sendmail ("$d4 День рождения у ".$line['f3911'],$text,"adres2@rambler.ru");
echo date("d.m.Y H:i:s")." отправлено: <br><br>".$text;
}
}
где 281 - номер таблицы, adres1@rambler.ru, adres2@rambler.ru - список адресов для отправки, f3911 - Ф.И.О., f16021 - телефон, f3941 - день рождения
Все замечательно работает и отправляет в 12-00 напоминание всем, чьи адреса указаны в списке. Аналогично можно организовать и отправку автосмс и автопочты самому имениннику