[PHP/SQL] Wysyłanie maila na adres z bazy

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
derecyori\
Posty: 4
Rejestracja: ndz lis 06, 2005 12:24 am

[PHP/SQL] Wysyłanie maila na adres z bazy

Post autor: derecyori\ »

Poniżej przedstawiam kod z którym mam problemy. W bazie danych mam dodane 2 testowe konta e-mail. Wpisuję w formularzu dane, wysyłam i dochodzą tylko na jedną skrzynkę. Dokładnie na ostatnią w bazie.
Tabela w bazie składa się tylko z dwóch pól ID i mail.
Proszę o pomoc !!!

Kod stronki :
[php]<form>
temat:<br>
<input type="text" name="temat"><br>
treść:<br>
<textarea rows="7" name="tresc" cols="40"></textarea><br>
<input type="submit" name="submit" value="wyślij">
</form>
<?
if ($submit) {
global $message, $subject, $urltomail, $HTTP_POST_VARS;
$message = $HTTP_POST_VARS['message'];
mysql_connect ("baza_danych.com.pl", "bis", "blob") or
die ("Nie można poł±czyć się z MySQL");
mysql_select_db ("baza_danych") or
die ("Nie można poł±czyć się z baz± cwphp4");

$query = "SELECT * FROM adresy";
$result = mysql_query($query);
$headers = "From: derec@baza_danych.com.pl";
while($subscriber = mysql_fetch_array($result)) {
$email = $subscriber['mail'];
}
mail("$email", "$temat", "$tresc \r\n $urltomail", "$headers");
print("Wiadomość została wysłana pomyślnie. ");
}
?>[/php]
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [PHP/SQL] Wysyłanie maila na adres z bazy

Post autor: iro »

Po pierwsze nie korzystaj z zapisu $HTTP_POST_VARS. Już dawno wyszło z użytku. Obecnie stosuje się zapis $_POST.
A teraz do rzeczy. Wysyła Ci tylko na ostatni adres, bo funkcję mail() wywołujesz tylko raz. Powinieneś umieścić ją w pętli. Wtedy wyśle maila na każdy adres jaki przypiszesz do zmiennej $email.
derecyori\
Posty: 4
Rejestracja: ndz lis 06, 2005 12:24 am

A tak

Post autor: derecyori\ »

A jeśli mógłbym poprosić to tak bardziej łopatologiczniej.
Kombinowałem z pętlą while ale efektów tego nawet nie będę opisywał bo chyba nikt jeszcze takich nie widział :-D
Dziękuję za odpowiedź.
derecyori\
Posty: 4
Rejestracja: ndz lis 06, 2005 12:24 am

Może zapytam inaczej

Post autor: derecyori\ »

Czy chodziło o taką zmianę:

Kod: Zaznacz cały

$message = $_POST['message'];
I drugie szybkie czy to ma szanse bytu :
[php]<?php
for ($index=0; $index < count ($email); $index++)
{
mail("$email", "$temat", "$tresc \r\n $urltomail", "$headers");
}
print("Wiadomość została wysłana pomyślnie. ");
?>[/php]

Dziękuję za wszelką pomoc.
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [PHP/SQL] Wysyłanie maila na adres z bazy

Post autor: iro »

[php]<?php
while($subscriber = mysql_fetch_array($result)) {
$email = $subscriber['mail'];

mail("$email", "$temat", "$tresc \r\n $urltomail", "$headers");
}
?>[/php]
Po prostu za każdym razem jak odczytujesz pojedyńczy email z bazy wysyłaj od razu na ten adres maila. Ewentualnie możesz zrobic to na tablicy:
[php]<?php
while($subscriber = mysql_fetch_array($result)) {
$email[] = $subscriber["mail"];
}

foreach ($email as $to) {
mail($to, "$temat", "$tresc \r\n $urltomail", "$headers");
}
?>[/php]
ODPOWIEDZ