[PHP][MySQL] Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych?
Chcesz wysłać pocztą w formacie HTML zawartość wybranej tabeli z bazy danych.
Czasem może okazać się przydatne wysłanie mailem zawartości tabeli znajdującej się w bazie danych, przedstawionej w postaci tabelki w formacie HTML. Takie rozwiązanie jest przydatne gdy tabela często zmienia swoją zwartość i nie jest duża. Wykonajmy coś takiego.
<?
$baza = mysql_connect("localhost", "user", "password");
mysql_select_db("baza1",$baza);
$wynik = mysql_query("SELECT * FROM tabela1",$baza);
mysql_close($baza);
$wierszy = mysql_num_rows($wynik);
$pol = mysql_num_fields($wynik);
$rezultat = "<table border=1>";
for ($i=0;$i<$wierszy;$i++) {
$wiersz = mysql_fetch_row($wynik);
$rezultat .= "<tr>";
for ($j=0;$j<$pol;$j++) $rezultat .= "<td>$wiersz[$j]</td>";
$rezultat .= "</tr>";
}
$rezultat .= "</table>";
// echo $rezultat;
$tytul = "Kopia tabeli";
$naglistu = "From: Twoja Firma <firma@twojadomena.pl>\n";
$naglistu .= "MIME-Version: 1.0\n";
$naglistu .= "Content-Type: text/html;\n";
$naglistu .= "\tcharset=\"iso-8859-2\"\n";
$naglistu .= "Content-Transfer-Encoding: 8bit\n\n";
mail("odbiorca@serwer.pl", $tytul, $rezultat, $naglistu);
?>
Zasada działania skryptu jest prosta - łączymy się z bazą danych podając login i hasło. Następnie wybieramy odpowiednią bazę (w przykładzie jest to baza1) i w niej wykonujemy polecenie SQL pobierające zawartość całej tabeli o nazwie tabela1. Mamy już zawartość tabeli w zmiennej $wynik, przechowującej wynik zapytania.
Drugi etap to zmiana formatu danych na HTML. Wyliczamy więc ile kolumn i wierszy będzie zajmował wynik, a następnie w pętli budujemy tabelę umieszczając w komórkach odpowiednie dane pobrane z bazy. Cała tabela ostatecznie znajdzie się w zmiennej $rezultat.
Ostatni etap to stworzenie listu w formacie HTML i wysłanie go do adresata. Trzeba tutaj określić adresy e-mail i ewentualnie tytuł tabeli. W zasadzie skrypt rozsyłający tabelę już jest gotowy. Można go uruchamiać np. po aktualizacji danych lub okresowo, raz na dobę, jeżeli ma być formą tworzenia kopii z danych znajdujących się w tabeli.