Cronjob Checkt DB Feld und sendet Mail

Cronjob mit DB Check und Mail Versand

Wenn ein Kunde vor Ablauf eines Zeitfensters das in einem Inhaltselement angegeben wurde, informiert werden soll, kann man das mit so einem Cronjob erledigen.
Hier wird dem Kunden 3 Tage vor ablauf der "endzeit" ein Email gesendet sodas er informiert ist das sein Inhaltselement in 3 Tagen nicht mehr sichtbar sein wird.

Dafür habe ich mal ein reines PHP Script geschrieben das ein Datenbankfeld nach einer Bedingung checkt, greift die Bedingung wird ein Email ausgelöst und der Kunde hat dann die Möglichkeit vor ablauf der Zeit zu reagieren.

Das Script kann man beim Hoster hinterlegen, und Ihm mitteilen das er das bitte einmal pro Tag ausführen lässt. Er wird das dann als "Cronjob" realisieren.

<?php

$host="localhost";
$benutzer="extname_typo";
$pass="das_passwort";
$datenbank="extname_typo";
//$tabelle="benutzerdaten";

mysql_connect($host,$benutzer,$pass) or die("kein connect mit MySQL");
mysql_select_db($datenbank) or die("kein connect zur DB");

$tabellenname="fe_users";
$tabellenfeld="tx_extname_ablaufdatum";
$emailsender="info@extname.ch";
$subject="Mailerrinnerung";

$timestamp_heute = time();
$timestamp_heute = date("d-m-y", $timestamp_heute);
echo "heute".$timestamp_heute."<br />";

$timestamp_heute = time();

//Timestam heute zu testzwecken anpassen.
//teste nach 25 tagen
//$timestamp_heute=$timestamp_heute+(25*86400);

//teste nach 30 tagen
//$timestamp_heute=$timestamp_heute+(30*86400);

//keine tests
$timestamp_heute=$timestamp_heute;
$timestamp_heute = date("d-m-y", $timestamp_heute);

$content=false;
$what="*";
$where="(disable='0' AND deleted='0' AND hidden='0' AND ".$tabellenfeld." !='0'";
$sql = mysql_query("SELECT ".$what." FROM ".$tabellenname." WHERE ".$where." ORDER BY id desc");

while ($row = mysql_fetch_assoc($sql)){
    $date_vor_5_tagen=$row['tx_extname_ablaufdatum']-(5*86400);
    $date_vor_5_tagen = date("d-m-y", $date_vor_5_tagen);

    $ablaufdatum=$row['tx_extname_ablaufdatum'];
    $ablaufdatum = date("d-m-y", $ablaufdatum);
    echo "<br />".$row['uid']."&nbsp;&nbsp;".$uid;
    echo "<br />".$row['username']."&nbsp;&nbsp;".$ablaufdatum;
    echo "<br />".$row['email']."&nbsp;&nbsp;".$emailempfaenger;

    //wenn das datum gleich ist wird das Inserat ausgeschaltet, das Ablaufdatum ist um.
    if($ablaufdatum!=""){
        if($timestamp_heute==$ablaufdatum){
                  $SQL = "UPDATE ".$tabellenname." 
                    SET 
                    disable='0'
                    WHERE id='".$uid."'";
                  mysql_query($SQL);   
                  echo "***wurde zurückgestellt***<br />";
             }else{
                   if($timestamp_heute==$date_vor_5_tagen){
                      echo "***Erinnerungsmail wurde geschickt***<br />";
                      $mailinhalt="";
                      $mailinhalt.="";
                      $mailinhalt.="<table border='0' bgcolor='f2f2f2'>
                              <tr>
                                <td style='width:170px' class='label'>
                                ID
                                </td>
                                <td>
                                ".$uid."
                                </td>
                              </tr>
                            </table>
                      ";

                       //Mail wird erstellt
                       $xtra = "From: ".$emailsender."\r\n";
                       $xtra .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
                       $xtra .= "X-Mailer: PHP ". phpversion();

                       //mail wird gesendet an den Kunde
                       $to = $emailempfaenger;
                       $subject = $subject;
                       mail($to, $subject, $mailinhalt, $xtra);

//Erinnerung wird an Admin gesendet
//$subject = "Erinnerung das Inserat mit der ID".$row['id']. "läuft in 5 tagen ab";
//$mailinhalt_admin="<br /><br />Das Inserat läuft in 5 Tagen ab. <br /><br />Erinnerung mit der ID ".$row['id']." und folgenden Daten: ";
//$mailinhalt_admin=$mailinhalt_admin."<br /><br />".$mailinhalt;
//mail wird gesendet für Administrator
//$to = $emailadresse;
//mail($to, $subject, $mailinhalt_admin, $xtra);
           }
         }
     }
}
?>
Datenbankfeld mit Bedingung checken und Mail auslösen