Lukas R.: Zeilen einer MySQL-Tabelle mit mail() versenden

Hallo zusammen,

nach langer Suche im Web hab ich leider nichts zu meinem Problem gefunden, daher die Frage hier in Forum:

Ich möchte einzelne Zeilen eine MySQL-Tabelle mit der mail()-Funktion von PHP versenden. Die Mail soll im HTML-Format gesendet werden.

Wenn man normalerweise einzelne Zeilen einer MySQL-Tabelle mittels PHP einfach ausgeben möchte, tut man das mittels einer while()-Schleife:

<?php
while ($value_einzelrechnung = mysql_fetch_array($result_ausgabe_einzelrechnung, MYSQL_ASSOC))
{
echo "  <tr>\r\n";
foreach ($ausgabe_einzelrechnung as $col_value_einzelrechnung)
{
echo "    <td>$col_value_einzelrechnung</td>\r\n";
}
echo "  </tr>\r\n";
}
?>

Darauf aufbauend habe ich folgendes versucht, um sie per Mail zu verschicken:

<?php
$nachricht = "irgendwas...\r\n";

while ($value_einzelrechnung_mail = mysql_fetch_array($result_ausgabe_einzelrechnung, MYSQL_ASSOC))
{
$nachricht .= "  <tr>\r\n";
foreach ($ausgabe_einzelrechnung_mail as $col_value_einzelrechnung_mail)
{
$nachricht .= "    <td>$col_value_einzelrechnung_mail</td>\r\n";
}
$nachricht .= "  </tr>\r\n";
}

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

Leider erzeugt diese Vorgehensweise keine Ausgabe der MySQL-Zeilen.

Vieleicht ist meine Herangehensweise ja die völlig falsche, deshalb die Frage, wie das Ganze zu realisieren ist.

Danke für Eure Hilfe!

--
Lukas

  1. Hallo Lukas,

    Ich möchte einzelne Zeilen eine MySQL-Tabelle mit der mail()-Funktion von PHP versenden. Die Mail soll im HTML-Format gesendet werden.

    Du hast also eine genaue Vorstellung, was Du machen willst. Das ist gut so.

    Vieleicht ist meine Herangehensweise ja die völlig falsche, deshalb die Frage, wie das Ganze zu realisieren ist.

    Ja, Du bist meiner Meinung nach falsch an die Sache herangegangen.
    Wie solltest Du also vorgehen? Ganz einfach, nach dem altbewährten EVA-Prinzip:

    - Eingabe
      - Verarbeitung
      - Ausgabe

    Du könntest nun einwenden, dass Du doch weder Eingabe noch Ausgabe hättest. Nun, das ist nicht ganz richtig. Das Auslesen von Daten aus einer Datenbank entspricht einer Eingabe. "Eingabegerät" ist halt weder Maus, noch Tastatur sondern eine Datenbank. Die Ausgabe erfolgt mit dem Versenden der Mail. Dazwischen liegt die Datenaufbereitung.

    Wenn Du diese Schritte strikt trennst, dann kannst Du stets überprüfen, ob ein Schritt erfolgreich war - und wenn ja, diesen schon einmal abhaken.

    Also:

    1. Eingabe
    Lese Deine Daten aus der Datenbank in eine geeignete Struktur ein. Dies könnte ein Array von asoziativen Arrays sein.

    Debugmöglichkeit: Gib das Array aus, z.B. mit var_dump().

    2. Verarbeitung
    2. Stelle aus Deinen Daten die Ausgabe zusammen, d.h. ein Array der Datenstrukturen, die Du dem Mailaufruf übergibst. Wiederum bietet sich ein Array von assoziativen Arrays an. Beachte dabei den Aufbau einer HTML-Mail. Da ich Mails nur als Plaintext lese - und nach Möglichkeit nur als Plaintext schreibe, habe ich keinen Bedarf an HTML-Mails, weiß aber, dass eine Recherche im Forumsarchiv mir liefern würde, worauf ich zu achten habe (boundaries kommen mir in den Sinn).

    Debugmöglichkeit: Gib das Array aus, z.B. mit var_dump().

    3. Ausgabe
    Schicke mit einer hübschen foreach-Schleife Deine Mails weg.

    Debugmöglichkeit: Sende die Mails alle an Dich selbst :-)

    Freundliche Grüße

    Vinzenz