| |
|
|
| | Товарищи, подскажите пожалуйста, каким образом можна реализовать вот такое:
необходимо в определенное время брать из БД информацию и рассылать ее в определенной форме на определенные емайлы. Например, существует база данных сотрудников, в ней внесена различная информаци типа: дата рождения, семейное положение ФИО и т.д. и т.п. Необходимо каждое 25 число месяца рассылать письмо (с данными на следующий месяц) типа в этом месяце будут дни рождения у следующих сотрудников и табличка с ДР и ФИО.
Очень буду благодарен за помощь! =))) | |
| |
|
|
| |
|
|
| |
для: k567
(11.12.2007 в 11:49)
| | | Что вызывает затруднение?
1) Вычисление у кого в следующем месяце день рождение?
2) Отправка e-mail
3) Выборка пользователей из базы данных?
4) Автоматический запуск скрипта в определённый день? | |
| |
|
|
| |
|
|
| |
для: cheops
(11.12.2007 в 11:53)
| | | 1,4 и формирование определенной формы рассылаемого письма | |
| |
|
|
| |
|
|
| |
для: k567
(11.12.2007 в 13:54)
| | | 1) У вас день рождение в базе данных в каком формате хранится? Используете календарный тип данных?
4) Для этого как правило используют cron http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3861. | |
| |
|
|
| |
|
|
| |
для: cheops
(12.12.2007 в 14:24)
| | | У меня нет доступа к крону. =( Хотя в принципе это можно решить!
Поле в базе, куда записываются даты рождения, содержит текстовый тип данных, а формат вот такой: 31.10.1976 | |
| |
|
|
| |
|
|
| |
для: k567
(13.12.2007 в 16:56)
| | | Так, в принципе со всем разобрался! Только вот осталось непонятно как сделать так что бы скрипт брал информацию о днях рождения с 1 по последнее число следующего месяца! | |
| |
|
|
| |
|
|
| |
для: k567
(13.12.2007 в 16:56)
| | | А нельзя исправить формат на 1976-10-31 и использовать поле DATE? Было бы гораздо удобнее решить эту задачу средствами MySQL? | |
| |
|
|
| |
|
|
| |
для: cheops
(14.12.2007 в 12:33)
| | | Дело в том что эта БД существовала за долго до моего появления на этом месте и человек который это делал почему то решил это сделать именно так, и как следствие давности существования базы, там уже очень много информации... боюсь что это не возможно! =((( Да и БД не mysql а postgresql!
Есть вот такой скрипт, который за некоторое время до дня рождения высылает инфу о сотрудниках у которых близится др.
<?php
$skip_check = 1;
include('../include/header.php');
include('../include/functions.inc');
//error_reporting(E_ALL);
$conn = $con;
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT state,
name, surname, date, id, vocation,
stucture, company, photo, mail from
information where state<>4 and state<>8 and
date<>'' order by date;");
if (!$result) {
echo "Ïðîèç
îøëà îøè
áêà.\n";
exit;
}?>
<TABLE border=0>
<CAPTION>Äíè ðî
æäåíèÿ</
CAPTION>
<TR><TH>name</TH><TH>surname</TH><TH>date</
TH></TR>
<?
$real_month=date('m');
settype($real_month, "integer");
$str.="<html><body>Ñêîð
î äíè ðî
æäåíèÿ ó
:<br><br><table width=100% border=\"0\">";
$month=array(0,31,29,31,30,31,30,31,31,30,
31,30,31);
$rows = pg_numrows($result);
$str .= "<tr><td>Äàòà</
td><td>Èìÿ</td><td>Ì
åñòî ðàá
îòû/íàõî
æäåíèÿ</
td><td>Äîëæíî
ñòü</td><td>E-Mail</td></
tr>";
$havebirthdays=0;
for ($row = 0; $row < $rows; $row++) {
$r = pg_fetch_array($result, $row);
$where = decode_structure($r["stucture"]);
if(strcmp($r["stucture"], $r["company"])){
$where .= "/".decode_structure($r["company"]);
}
if($r["mail"]){
$mail = "<a href=\"mailto:".
$r["mail"]."\">".$r["mail"]."</a>";
}else{
$mail = "íåò";
}
$tok = strtok($r['date'],".");
$t=$tok-date('d');
$tok = strtok(".");
$tt=$tok-date('m');
$v1=strtok($r['date'],".")+$month[$real_month]-date('d');
if ($tt==0 and $t==7 or $tt==0 and $t==3
or $tt==1 and $v1==7 or $tt==1 and $v1==3 ){
$havebirthdays=1;
$adat = split("\.", $r['date']);
$mydate = $adat[0].".".$adat[1].".".
$adat[2];
?>
<TR><td><?echo $r['name']?></td><td><?
echo $r['surname']?></td><Td><?echo
$r['date']?></Td></TR>
<?
$str.= "<tr><td>$mydate</td><td><a
href=\"http://internal.ru/information_main.
php?id=".$r['id']."\">".$r['name']." ".
$r['surname']."</a></td><td>$where</
td><td>".$r['vocation']."</td><td>".$mail.
"</td></tr>";
}
}
if ($havebirthdays) {
$str .= "</table>";
$theme = "Ñîòðó
äíèêè: Á
ëèæàéøè
å äíè ðî
æäåíèÿ";
//error_reporting(E_ALL);
include("Mail.php");
include("Mail/mime.php");
$mime = new Mail_mime("\r\n");
$hdrs = array('From' => 'Èí
òåðíàë -
Äíè Ðîæä
åíèÿ êîë
ëåã<websrv@fw.internal.ru>',
'Subject' => $theme);
$params = array("text_encoding"=>"quoted-printable",
"html_encoding"=>"quoted-printable",
"html_charset"=>"windows-1251",
"text_charset"=>"windows-1251");
$mime->setHTMLBody($str);
$body = $mime->get($params);
$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send('members@internal.ru, admin@internal.ru', $hdrs, $body);
}
mail('admin@internal.ru', $PHP_SELF, 'Working...');
?>
|
Все это дело работает на внутреннем сайте, так называемом internal.ru. Возможно ли переделать этот скрипт под мои нужды? | |
| |
|
|
| |
|
|
| |
для: k567
(14.12.2007 в 12:56)
| | | Ну что, совсем идей нет? | |
| |
|
|
| |
|
|
| |
для: k567
(14.12.2007 в 12:56)
| | | Может быть для начала Вы приведете скрипт нормально, без дряни (Ïð...)на месте русских букв?
to cheops: помните, я предлагал Вам сделать кнопку, которая бы устраняла этот венигрет?
И даже код вроде бы привел.
Вы сказали - никто пользоваться не будет.
Угу. Зато все читают эту прелесть. | |
| |
|
|
| |
|
|
| |
для: Trianon
(17.12.2007 в 11:54)
| | | >to cheops: помните, я предлагал Вам сделать кнопку, которая бы устраняла этот венигрет?
>И даже код вроде бы привел.
Не помню. | |
| |
|
|
|
| |
|
|
| |
для: Trianon
(17.12.2007 в 20:25)
| | | Да, конечно. Вот более читабельный вариант:
<?php
$skip_check = 1;
include('../include/header.php');
include('../include/functions.inc');
//error_reporting(E_ALL);
$conn = $con;
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT state, name, surname, date, id, vocation, stucture, company, photo, mail from information where state<>4 and state<>8 and date<>'' order by date;");
if (!$result) {
echo "Произошла ошибка\n";
}?>
<TABLE border=0>
<CAPTION>Дни рождения</CAPTION>
<TR><TH>name</TH><TH>surname</TH><TH>date</TH></TR>
<?
$real_month=date('m');
settype($real_month, "integer");
$str.="<html><body>Скоро дни рождения:<br><br><table width=100% border=\"0\">";
$month=array(0,31,29,31,30,31,30,31,31,30,31,30,31);
$rows = pg_numrows($result);
$str .= "<tr><td>Имя</td><td>Èìÿ</td><td>Место работы\ нахождения</td><td>Должность</td><td>E-Mail</td></tr>";
$havebirthdays=0;
for ($row = 0; $row < $rows; $row++) {
$r = pg_fetch_array($result, $row);
$where = decode_structure($r["stucture"]);
if(strcmp($r["stucture"], $r["company"])){
$where .= "/".decode_structure($r["company"]);
}
if($r["mail"]){
$mail = "<a href=\"mailto:".$r["mail"]."\">".$r["mail"]."</a>";
}else{
$mail = "Нет";
}
$tok = strtok($r['date'],".");
$t=$tok-date('d');
$tok = strtok(".");
$tt=$tok-date('m');
$v1=strtok($r['date'],".")+$month[$real_month]-date('d');
if ($tt==0 and $t==7 or $tt==0 and $t==3 or $tt==1 and $v1==7 or $tt==1 and $v1==3 ){
$havebirthdays=1;
$adat = split("\.", $r['date']);
$mydate = $adat[0].".".$adat[1].".".$adat[2];
?>
<TR><td><?echo $r['name']?></td><td><?echo $r['surname']?></td><Td><?echo $r['date']?></Td></TR>
<?
$str.= "<tr><td>$mydate</td><td><a href=\"http://internal.ru/information_main.php?id=".$r['id']."\">".$r['name']." ".$r['surname']."</a></td><td>$where</td><td>".$r['vocation']."</td><td>".$mail."</td></tr>";
}
}
if ($havebirthdays) {
$str .= "</table>";
$theme = "Сотрудники: Ближайшие дни рождения";
//error_reporting(E_ALL);
include("Mail.php");
include("Mail/mime.php");
$mime = new Mail_mime("\r\n");
$hdrs = array('From' => 'Интернал - Ближайшие дни рождения<websrv@fw.internal.ru>',
'Subject' => $theme);
$params = array("text_encoding"=>"quoted-printable",
"html_encoding"=>"quoted-printable",
"html_charset"=>"windows-1251",
"text_charset"=>"windows-1251");
$mime->setHTMLBody($str);
$body = $mime->get($params);
$hdrs = $mime->headers($hdrs);
$mail =& Mail::factory('mail');
$mail->send(' admin@internal.ru, users@internal.ru', $hdrs, $body);
}
mail('admin@internal.ru', $PHP_SELF, 'Working...');
|
| |
| |
|
|
| |
|
|
| |
для: k567
(18.12.2007 в 12:41)
| | | Ну что? Есть идеи? Я че то совсем в тупик забрел! =( | |
| |
|
|