Hello all,

Kheb een vraag/probleem. Ik heb een scriptje gemaakt voor een soort verjaardagskalender/lijstje. Dit werkt prima, maar....
Ik wil ook dat op de dag van de verjaardag een automatisch mailtje wordt verzonden naar de persoon. Ik heb al wat gemaakt, maar het werkt niet.
Mijn vraag aan jullie..... waar zit de fout of is het zo uberhaupt wel mogelijk.
Alvast bedankt voor de info!!!!



blablabla......

// maximaal aantal te tonen jarigen
$caleventslimit = intval( $params->get( 'count', 5 ) );


$aVandaag = getdate();
$maand   = $aVandaag['mon'];
$dag     = $aVandaag['mday'];

// Deze SQL haalt uit de verjaardagen tebal op:
// datum van verjaardag, naam, en de leeftijd
$sqlcal    = "select naam, datum, datum_overlijden, naam_baas, email, " .
             "(year(curdate()) - year(datum)) as leeftijd, " .
             "concat(dayofmonth(datum),'/',month(datum)) as jarigop " .
             "from $table " .
             "where dayofyear(datum) >= dayofyear(curdate()) " .
             " order by month(datum),dayofmonth(datum) asc limit $caleventslimit";

// query uitvoeren
$database->setQuery($sqlcal);
$rows = $database->loadObjectList();

if ($rows === null) {
  $content = "Geen jarigen deze maand";
	return;
}

// resultaat opbouwen
$content  ="<font size=1><b>Komende verjaardagen</b></font><br/><br/>";

$content .= "<table width='100%' border='0' cellspacing='0' cellpadding='0'>";

foreach($rows as $row) {
  $naam = stripslashes($row->naam);
  $datum = stripslashes($row->datum);
  $leeftijd = stripslashes($row->leeftijd);
  $jarigop = stripslashes($row->jarigop);
  $datum_overlijden = stripslashes($row->datum_overlijden);
  $naam_baas = stripslashes($row->naam_baas);
  $email = stripslashes($row->email);

if($datum_overlijden == "")
  {
  $content .= "<tr><td width=5 valign=top align=left>" .
              "<font size=1><b>" . $jarigop . "</b>&nbsp;</font></td>" .
              "<td align=left valign=top>" .
             "<font size=1>" . $naam . " (" . $leeftijd . ")</font></td></tr>";
			 }
else
{
 $content .= "";
}}


$content .="</table>";

//email sturen
if ($datum = $aVandaag);
mail($email,$subject,$message,$headers);

blablabla

Alleen als het script wordt uitgevoerd lijkt me.

Als jij of een bezoeker de pagina met dat script niet opent, wordt er m.i. geen mail gestuurd.
hello all,

Nou helaas het script verstuurd geen e-mail. Volgens mij is

if ($datum == $aVandaag);

fout, want $aVandaag verwijst eigenlijk niet naar de huidge datum op dat moment. Weet iemand welke code dat wel is?
Alvast bedankt!
Kijk eens bij [php]date()[/php].
Hoe zorg je er voor dat je script ook daadwerkelijk uitgevoerd wordt? Stel nu dat niemand je pagina opvraagt op een dag dat er iemand jarig is?
Hello,

Elke dag bezoeken mensen mijn site, dus de kans is klein dat het sprit niet opgevraagd wordt. Maar is er dan een "makkelijke" manier om het automatisch te laten draaien?
SanThe: ik heb gekeken bij date(), maar moet ik persé iets tussen de haakjes zetten?
Je zou een cronjob kunnen maken die gewoon om drie uur s'nachts dat script gaat runnen.
weet je een link waar ik hier informatie over kan vinden?
Jan Koehoorn schreef op 28.12.2006 21:46
Hoe zorg je er voor dat je script ook daadwerkelijk uitgevoerd wordt? Stel nu dat niemand je pagina opvraagt op een dag dat er iemand jarig is?


Ik was ook al zoiets aan het denken...
Ik had overtijd ook een vraag over cronjobs. Het probleem was gewoon dat je script het wel doet, maar dat de pagina niet wordt aangeroepen..

EDIT:
hier is de link:)
http://www.phphulp.nl/forum/showtopic.php?cat=1&id=24229

EDIT2:
Mijn webserver is tijdelijk offline, ik hoop dat hij snel terug on komt. Als hij terug online is kan je die afbeelding die erop staat over de cron bekijken:)
seb schreef op 28.12.2006 21:31
hello all,

Nou helaas het script verstuurd geen e-mail. Volgens mij is

if ($datum == $aVandaag);

fout, want $aVandaag verwijst eigenlijk niet naar de huidge datum op dat moment. Weet iemand welke code dat wel is?
Alvast bedankt!
Let op het foutieve gebruik van de edele puntkomma ;-)

Verder lijkt het me het meest praktisch om een (extra) SQL-query te maken waarmee je alle jarigen van vandaag opvraagt. Die kun je dan mail sturen zonder de datum te hoeven controleren, want met die array-constructie van $aVandaag moet je behoorlijk gaan prutsen om een datumvergelijking te kunnen uitvoeren.

En (zoals al eerder gezegd) zou dit dus in een cronjob moeten, omdat je anders de kans loopt dat iemand óf geen mail ontvangt, óf een paar honderd (afhankelijk van het aantal bezoekers).

O ja, en zet je mail-commando binnen de foreach, anders verstuurt 'ie alleen mail naar de laatste persoon in je lijst.

Reageren