Als Voraussezung würde ich ich schonmal festlegen, dass der eingetragene Termin als Timestamp vorliegt.
Mit dem folgenden Code werden alle Termine ausgegeben, die im Zeitfeld 10-15 Min vor dem Terminbeginn liegen.
PHP-Code:
<?
include("includes/config.php");
include("includes/dbset.php");
$timestamp = time();
$check1= date('YmdH',$timestamp);
$check2= date('i',$timestamp);
$result = mysql_query("SELECT * FROM termin WHERE termin LIKE '$check1%'");
while($daten = mysql_fetch_array($result)) {
$min = (substr($daten['termin'],10,2)-$check2);
if((10 < $min) AND ($min <= 15)){
echo "Mail für den Termin: ".$daten['termintext']."<br>";
}
}
?>
Also einfach da wo ich nun das echo stehen habe, die Mailfunktion rein.
Damit Mails dann nicht immer doppelt kommen,kann man in der DB ein Feld anlegen (mitgeteilt), das dann via Update einen Wert bekommt (bsp:1) und somit als mitgeteilt gilt. Dazu dann die Select Klausen wie folgt abändern
PHP-Code:
$result = mysql_query("SELECT * FROM termin WHERE ((termin LIKE '$check1%') AND (mitgeteilt != '1'))");
Oder einfach den CRON Job alle 5 Minuten laufen lassen, da das Zeitfeld ja nur 5 Min beträgt.
Allerdings ist die Update Version sicherer, da ein Cron auch schonmal nachhängen kann (bsp. wegen Logrotate).
Wenn man es mit dem Update macht, den Cron ruhig jede Min laufen lassen, ist ja nicht viel.