php script voor automatisch versturen verjaardagsmail

Status
Niet open voor verdere reacties.

rob59

Gebruiker
Lid geworden
1 okt 2007
Berichten
39
In onze atletiekverenigings SQL database staan alle gegevens van de leden, dus ook de geboortedata.
Ik zoek een php-script dat op basis van deze gegevens en de huidige datum automatisch een felicitatiemail naar de jarige verstuurt.
Ik wil dit script dan aan laten roepen vanuit een Cron job in de SQL database.
De tabel (tblid) met de ledengegevens heeft de volgende veldnamen.
lidcode, lidnaam, lidgeboortedatum, lidactueel
Deze laatste is nodig om aan te geven of men nog lid is, omdat de gegevens ook gebruikt worden voor het verwerken van uitslagen.
Wie kan mij verder helpen?

Rob :cool:
 
Re:

ik wil je helpen als je me een paar dingen meer vertelt;

wat is cronjob? ben bekend met php javascript en html en gml (game maker langauge) dus daar licht het niet aan.. en je moet me vertellen hoe de row heet die de datum van de verjaardag aangeeft. dan is het nog een simpel while() om het te verzenden
 
Cronjob
In computing, cron is a time-based scheduling service in Unix-like computer operating systems. The name is derived from Greek chronos (??????), meaning time.
cron has been recreated several times in its history.
Van de engelse wikipedia.

Dus gewoon een taak die uitgevoert wordt op basis van tijd.

De rij die gebruikt moet worden is lidgeboortedatum.

Dingen die je eerst moet doen is de datum controleren, daarna moet je een query opstellen die kijkt welke actieve leden aangeroepen moeten worden.

Ik vraag me wel af naar welk mailadres die mailtjes worden gestuurd aangezien je geen rij voor een emailadres geeft.
 
scripten is zo af maar ben er nog niet. wat is het formaat waarop de datum in je row staat en waar staat zoals hier boven genoemt de row voor mail?
 
Cron job

Ik ga binnenkort de emailadressen toevoegen aan de ledentabel als veld lidmail.

Ik neem aan dat ik op soortgelijke wijze alsbij de uitslagendatabase een query moet maken
voor het opzoeken van de lidnaam, geboortedatum en mailadres. Is er een scriptregel waar je de actuele datum mee kunt opvragen. Zoiets als Date(now) in excel.

Het datumformaat is: Date en weer het amerikaanse datumformat jjjj-mm-dd

De exacte veldnamen zijn:
lidcode
lidnaam
lidgeboortedatm (dus zonder u)
lidmail
lidactueel

Groeten,
Rob
 
Laatst bewerkt:
aangezien jij niet snapt hoe scripten werkt en ik informatie nodig heb vooradt ik iets kan antwoorden heb ik een script gemaakt waarbij je het zelf kan invullen. wat je niet snapt vraag maar. maar maak eerst in je datbase een rij aan die heet mail waarin de mail staat van de user, nee hij mag niet naders heten :P

Code:
<?php
//Titile:
//check for brithdays today



include('connect.php'); //replace connect.php to you're connection file
$db_tabel="";//Where mail and date from the users 
$message=""; //HTML enable. Dont use " but \"
$from="";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject=""; //HTML disable. Dont use " but \"
$date_f="";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `".$db_tabel."`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
	{
	$mail = htmlspecialchars($lid->mail);
	$date_user=htmlspecialchars($lid->lidgeboortedatum);
	$date_now=date($date_f);
	//SENDING MAIL
	mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
	}
?>
 
Ik heb de gevraagde gegevens ingevuld. Was dit de bedoeling?
PHP:
<?php
//Titel: Felicitatiemail AV de Liemers
//check for brithdays today



include('connect_db_strato_avl'); //replace connect.php to you're connection file
$db_tabel="tblid";//Where mail and date from the users 
$message="Namens AV de Liemers ....bla bla bla..."; //HTML enable. Dont use " but \"
$from="ledenadministratie@avdeliemers.nl";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="lidmail";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject="Hartelijk gefeliciteerd"; //HTML disable. Dont use " but \"
$date_f="lidgeboortedatm";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `".$db_tabel."`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
	{
	$mail = htmlspecialchars($lid->mail);
	$date_user=htmlspecialchars($lid->lidgeboortedatm);
	$date_now=date($date_f);
	//SENDING MAIL
	mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
	}
?>

:thumb:
 
niet helemaal kijk bij date_f even achter de // daar staat een link. je moet die geod invullen. ik wil het wel voor je doen maar dan moet jij even een voorbeeld value geven van een datum die is ingevuld
 
niet helemaal kijk bij date_f even achter de // daar staat een link. je moet die geod invullen. ik wil het wel voor je doen maar dan moet jij even een voorbeeld value geven van een datum die is ingevuld

Is dit de bedoeling?

PHP:
<?php
//Titel: Felicitatiemail AV de Liemers
//check for brithdays today



include('connect_db_strato_avl'); //replace connect.php to you're connection file
$db_tabel="tblid";//Where mail and date from the users 
$message="Namens AV de Liemers ....bla bla bla..."; //HTML enable. Dont use " but \"
$from="ledenadministratie@avdeliemers.nl";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="lidmail";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject="Hartelijk gefeliciteerd"; //HTML disable. Dont use " but \"
$date_f="http://nl2.php.net/1959-08-17";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `".$db_tabel."`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
	{
	$mail = htmlspecialchars($lid->mail);
	$date_user=htmlspecialchars($lid->lidgeboortedatm);
	$date_now=date($date_f);
	//SENDING MAIL
	mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
	}
?>
 
Laatst bewerkt:
PHP:
<?php
//Titel: Felicitatiemail AV de Liemers
//check for brithdays today



include('connect_db_strato_avl'); //replace connect.php to you're connection file
$db_tabel="tblid";//Where mail and date from the users 
$message="Namens AV de Liemers ....bla bla bla..."; //HTML enable. Dont use " but \"
$from="ledenadministratie@avdeliemers.nl";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="lidmail";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject="Hartelijk gefeliciteerd"; //HTML disable. Dont use " but \"
$date_f="1959-08-17";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `".$db_tabel."`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
	{
	$mail = htmlspecialchars($lid->mail);
	$date_user=htmlspecialchars($lid->lidgeboortedatm);
	$date_now=date($date_f);
	//SENDING MAIL
	mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
	}
?>
instaleer dit in je contrab en try
 
Cron job

Ik zal het script op de server plaatsen en dan de opdrachtregel voor het aanroepen van
het script in de Cron trab plaatsen. Zal me benieuwen?

Rob
 
Cron job

cron job sorry voor als je dat verwarde ik heb nogmaald geen ervaring daar mee.

In de SQL database bij host Strato waar onze website op draait (php-fusion) heeft de mogelijk heid om via databasebeheer zgn Cron jobs, dwz opdrachten die periodiek herhaald moeten worden uit te voeren.
Zie het maar als een timer van de dvd-recorder die je instelt om elke dag, week of maand een programma op te nemen. Hier stel dan een opdrachtregel in die elke dag in dit geval om 00:00 uur het felicitatie script aanroept.

Als ik op de site http://nl2.php.net/date kijk, zou het datum format achter $date_f ("Y-m-d") moeten zijn. klopt dat?
 
Laatst bewerkt:
vervolg

ja volgens mij wel maar je hebt nog een ding fout; replty_to moet een mail adres zijn

PHP:
<?php
//Titel: Felicitatiemail AV de Liemers
//check for brithdays today


 setlocale (LC_ALL, 'nl_NL');

  include( 'connect_db_strato_avl.php' ); //replace connect.php to you're connection file

//$db_tabel="tblid";//Where mail and date from the users 
$message="Namens AV de Liemers ....bla bla bla..."; //HTML enable. Dont use " but \"
$from="ledenadministratie@avdeliemers.nl";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="webmaster.rob@avdeliemers.nl";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject="Hartelijk gefeliciteerd"; //HTML disable. Dont use " but \"
$date_f="Y-m-d";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `tblid`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
	{
	$mail = htmlspecialchars($lid->mail);
	$date_user=htmlspecialchars($lid->lidgeboortedatm);
	$date_now=date($date_f);
	//SENDING MAIL
	mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
	}
?>

Aanpassing: tabelnaam tblid rechtstreeks in regel $sql gezet
 
Laatst bewerkt:
dat is een variable die de sql leest.

oké, ik heb hem zien staan.

Ik krijg nu deze melding na een heel lang zandlopertje. Lijkt wel of de mailserver
iets niet snapt?

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, service@webmailer.de and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
 
mijn fout sorry.

PHP:
<?php
//Titel: Felicitatiemail AV de Liemers
//check for brithdays today


setlocale (LC_ALL, 'nl_NL');

  include( 'connect_db_strato_avl.php' ); //replace connect.php to you're connection file

//$db_tabel="tblid";//Where mail and date from the users
$message="Namens AV de Liemers ....bla bla bla..."; //HTML enable. Dont use " but \"
$from="ledenadministratie@avdeliemers.nl";    //Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$reply_to="webmaster.rob@avdeliemers.nl";//Like "JesseD.nl <admin@jessed.nl>". Dont use " but \"
$subject="Hartelijk gefeliciteerd"; //HTML disable. Dont use " but \"
$date_f="Y-m-d";  //User http://nl2.php.net/date

$sql = 'SELECT * FROM `tblid`';
$query = mysql_query($sql) or die(mysql_error());

while($lid = mysql_fetch_object($query))
    {
    $mail = htmlspecialchars($lid->mail);
    $date_user=htmlspecialchars($lid->lidgeboortedatm);
    $date_now=date($date_f);
      if($date_user==$date_now)
         {
          //SENDING MAIL
          mail($mail,$subject,$message,"From: ".$from."\nContent-Type: text/html; charset=UTF-8\nMIME-Version: 1.0\nReply-To: ".$reply_to."");
         }
    }
?>
 
Het werkt bijna

Bij het foute script kwam er elke keer dat het aanriep na het zandlopertje uiteindelijk wel
mail. Ik had mijn verjaardag even aangepast naar vandaag.
Na de aanpassing komt er niets meer?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan