Frage von Mickan1994, 45

MySQL DatenbankabfragenInhalt per PHP eMail senden?

Ich würde gerne gewisse Inhalte aus einer SQL Datenbankabfrage per eMail versenden wenn das Datum in der Spalte "wiedervorlage" das heutige ist.

Das ganze Skript muss ich dann per Cronjob ausführen - soweit weiß ich es aber ich bekomme die Kombi zwischen PHPMail Versand und SQL Abfrage nicht hin. Ich bin bei Google auf Seite 10!! und hoffe hier auf Hilfe! :)

meine Datenbank hat in der Tabelle wiedervorlage u.a. die Spalten "finanzprojektnummer, wiedervorlage und beschreibung. Diese will ich alle per eMail ausgeben und senden, wenn das Datum in "Wiedervorlage" dem heutigen entspricht.

Wenn ich die eMail Funktion ausklammer und eine fixe Finanzprojektnummer einsetze dann wird mir eine Tabelle angezeigt mit den gewollten Daten bezogen auf die fixe Finanzprojektnummer. Sobald ich die eMailFunktion wieder einklammer, bekomme ich eine leere eMail. Dabei möchte ich eine eMail mit dem Inhalt bekommen, der mir bei Ausklammerung in Tabellenform angezeigt wird. Wo liegt hier der Fehler vor? Mein Code sieht bisher folgendermaßen aus:

    <?php

$host = "host"; $user = "User"; $pass = "Passwort"; $con = mysql_connect($host,$user,$pass) or die (mysql_error()) ; mysql_select_db("datenbank",$con) or die (mysql_error()) ; $sql = " SELECT mandant,finanzprojektnummer,wiedervorlage,beschreibung,erledigt FROM wiedervorlage WHERE finanzprojektnummer Like 1234567 "; $query = mysql_query($sql); echo "

    "; WHILE($row = mysql_fetch_assoc($query)) { echo '

    { echo '

    '; '; echo '' . $row['mandant'] . ''; echo '' . $row['finanzprojektnummer'] . ''; echo '' . $row['wiedervorlage'] . ''; echo '' . $row['beschreibung'] . ''; echo '' . $row['erledigt'] . ''; echo ''; } echo ''; } echo "

"; $empfaenger = 'empfaenger@provider.de'; $betreff = 'Neue Nachricht'; $nachricht = $row['beschreibung']; $header = "FROM: Absender

"; mail($empfaenger, $betreff, $nachricht, $header); ?>

Antwort
von PatrickMuku, 34

Auf das Skript den cronjob alle x Minuten ausführen.

Im SQL die where Bedingung um `wiedervorlage` <= NOW() ergänzen.

Den Inhalt nicht ausgeben (echo) sondern in $nachricht.

Bei erfolgreichem versenden das Datum von wiedervorlage auf null setzen.

Zum Schluss: für solche Fragen besser stackoverflow nutzen :P

Kommentar von PatrickMuku ,

Ungefähr so:

$host = "host";

$user = "User";
$pass = "Passwort";
$con = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db("datenbank", $con) or die(mysql_error());
$sql = "SELECT mandant,finanzprojektnummer,wiedervorlage,beschreibung,erledigt FROM wiedervorlage WHERE finanzprojektnummer LIKE 1234567 AND wiedervorlage >= NOW()";
$query = mysql_query($sql);

while ($row = mysql_fetch_assoc($query)) {
$empfaenger = 'empfaenger@provider.de';
$betreff = 'Neue Nachricht';
$nachricht = $row['beschreibung'];
$header = "FROM: Absender";
mail($empfaenger, $betreff, $nachricht, $header);
}
Kommentar von Mickan1994 ,

Vielen Lieben Dank für die Hilfe! Ich habe dein Script jetzt 1:1 übernommen und die relevanten Daten geändert (Passwort usw) aber leider ist die Email nach wie vor leer... :/ 

Kommentar von PatrickMuku ,

Ich kenne dein System nicht. Mein Skript wird nicht 1:1 funktionieren

Kommentar von Mickan1994 ,

Also es klappt doch - die Testabfrage war nur leer :D wie kann ich aber eine Tabelle als eMail ausgeben in der alle Daten stehen also Mandant, finanzprojektnummer, wiedervorlage usw alles als einzelne eMail falls mehrere Daten auf das Wiedervorlagedatum heute() also Beispiel 04.08.2016 auftreten? müsste ja alles in $nachricht rein. 

Kommentar von PatrickMuku ,

Du kannst in der email auch HTML verwenden:

$nachricht = "<table><tr><td>".$row["finanzprojektnummer"]."</td></tr></table>";

Keine passende Antwort gefunden?

Fragen Sie die Community