Avatar billede elohim Nybegynder
09. juni 2009 - 00:30 Der er 9 kommentarer og
1 løsning

Tjek en dato og sende en mail hvis denne dato er i dag

Hej Eksperter

Jeg har bøvlet en del med denne opgave.

Jeg vil gerne gennemløbe en db for dato´er, f.eks. en fødselsdato og så vil jeg gerne sende en mail til ALLE i min db, der har dagsdato i fødselsato den dag.

er der nogen der har et forslag

hilsen Ib
Avatar billede repox Seniormester
09. juni 2009 - 00:44 #1
Ikke uden at vide hvad du har at arbejde med - jeg har selv en masse gode idéer, men det er jo ikke sikkert de passer til din struktur.
Avatar billede elohim Nybegynder
09. juni 2009 - 01:07 #2
Jeg har en MYSQL database som indeholder table´s f.eks. famely.
Denne table indeholder et felt med en fødselsdato i formatet
yyyy-mm-dd.
Så vil jeg gerne tjekke om dd er lige med fødselsdato i feltet "fodselsdato" og hvis den er det vil jeg sende en mail.

håber det er svar nok.
Avatar billede Slettet bruger
09. juni 2009 - 01:09 #3
$server = "s";
$username = "u";
$password = "p";
$database = "d";
$table = "t";

mysql_connect($server, $username, $password);
mysql_select_db($database);

function GetBirthdays()
{
  $string = "SELECT id FROM $table WHERE birthday_month = ".date("n")." AND birthday_day = ".date("j");
  $query = mysql_query($string);
  if (!$query)
    return false;
  while ($row = mysql_fetch_array($query))
    $array[] = $query[0]
  return $array;
}

Ovenstående returnerer et array indeholdende id'er til samtlige brugere i en tabel.
Avatar billede Slettet bruger
09. juni 2009 - 01:09 #4
Rettelse...

Ovenstående returnerer et array indeholdende id'er til samtlige brugere i en tabel.

Skulle være:

Ovenstående returnerer et array indeholdende id'er til samtlige brugere, der har fødselsdag på den aktuelle dato.
Avatar billede showsource Seniormester
09. juni 2009 - 07:26 #5
$date_now = date("m-d");

$query = "SELECT email FROM tabel WHERE SUBSTRING(datofelt, 6) = '".$date_now."'";
Avatar billede coderdk Praktikant
09. juni 2009 - 09:01 #6
Erh...

SELECT email FROM tabel WHERE fodselsdato = NOW()

og så bare loope og sende ;)
Avatar billede coderdk Praktikant
09. juni 2009 - 09:02 #7
og jeg er træt - showsources vil virke ;) men måske nemmere med DATE_FORMAT i stedet:

SELECT email FROM tabel WHERE DATE_FORMAT(fodselsdato,'%m-%d') = DATE_FORMAT(NOW(),'%m-%d')
Avatar billede showsource Seniormester
09. juni 2009 - 09:16 #8
Så må du vist hellere få sovet lidt, coderdk :O)

Jeg tænkte også først på DATE_FORMAT, men vil tro at SUBSTRING og med en foruddefineret dato, vil være hurtigere ?

Og feltet i db er jo gemt som yyyy-mm-dd
Avatar billede elohim Nybegynder
11. juni 2009 - 00:48 #9
snowsource det var din jeg brugte, send mig et svar

PS kan du evt. svare på hvorfor jeg ikke kan
"SELECT email1 FROM evcontacts WHERE $usetype  = '$useindhold'"

hvor der jeg har i
$usetype er f.eks. firstname og det jeg har i $useindhold er Ib

det virker hvis jeg skriver
"SELECT email1 FROM evcontacts WHERE firstname  = '$useindhold'"
men så er fidusen jo væk, hvis der er flere $usetype.
Avatar billede showsource Seniormester
11. juni 2009 - 05:59 #10
Har du prøvet at smide en or die(mysql_error()) på din query ?
Eller lave en echo af sql før den skal afvikles ?

Selv ville jeg gøre så'n:

$sql = "SELECT email1 FROM evcontacts WHERE ".$usetype." = '".$useindhold."'";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester