marian84
22.02.2008, 19:59:55
Witam!
Chciałbym zrobić prosty systemik newslettera. Mniejwięcej, cos takiego:
Dwa pola tekstowe, pierwsze jako temat @, drugie jako treść. Adresy mailowe pobierane z bazy danych, z 2 wartosciami, Id oraz @.
Niestety jestem bardzo początkujący i nie wiem jak się za to zabrać. Porszę o pomoc
netmare
22.02.2008, 20:02:28
tzn czego nie wiesz?? wszystkiego??
marian84
22.02.2008, 20:10:22
No moze nie wszystkiego....
Wiem jak polaczyc się z bazą, pozniej chyba musze zrobic formularz z polami tekstowymi + jakis submit... tylko co dalej
netmare
22.02.2008, 20:18:31
no dalej plik php z pętlą wyciągającą adresy z bazy i funkcja mail()
marian84
22.02.2008, 20:34:56
Wymodzilem coś takiego:
1 plik html z zawartoscia:
Kod
<form action="wyslij.php" method="post">
Temat<br /><input name="temat" type="text" /><br />Zawartość<br />
<textarea name="zawartosc" cols="" rows="10"></textarea><br>
<input name="" type="submit" value="wyslij" />
</form>
plik wyslij.php
Kod
<?php
$con = mysql_connect('localhost', 'root', 'krasnal');
if (mysql_error()) die('Database connection error: '. mysql_error());
mysql_select_db('adresy', $con);
if (mysql_error()) die('Database selection error: '. mysql_error());
$adres= mysql_query('SELECT mail FROM subskrybcja');
mysql_close($con);
$temat = $_POST['temat'];
$zawartosc = $_POST['zawartosc'];
$naglowki = "MIME-Version: 1.0\r\n";
$naglowki .= "Content-type: text/html; charset=UTF-8\r\n";
$naglowki .= "From: MAIL";
mail($adres, $temat, $zawartosc, $naglowki);
?>
Czy ide w dobrym kierunku??
netmare
22.02.2008, 20:39:24
tak, tylko niewątpliwie przyda się coś co przerobi rezultat zapytania który przechwytujesz do $adres na konkretne adresy. Poczytaj o czymś jak mysql_fetch_row. A co do mail() to nigdy nie korzystałem, ale chyba sama ta funkcja nie jest skomplikowana.
marian84
22.02.2008, 20:42:09
Cytat(netmare @ 22.02.2008, 20:39:24 )

(...)Poczytaj o czymś jak mysql_fetch_row. A co do mail() to nigdy nie korzystałem, ale chyba sama ta funkcja nie jest skomplikowana.
yyyy, a mozna cos więcej... troszkę gotowca
netmare
22.02.2008, 20:43:43
Ode mnie nie ;P gotowiec znajdziesz napewno w postaci przykładu na pl.php.net jak znajdziesz sobie tą funkcję ;P
marian84
22.02.2008, 20:54:50
czytam, czytam... metlik w glowie jeszcze większy... pomocy!
netmare
22.02.2008, 21:02:59
schemat postępowania:
$wynikzapytania=mysql_query(...);
while($wiersz=@mysql_fetch_row($wynikzapytania)) //to oznacza jeśli uda się pobrać kolejny wiersz z $wynikzapytania, a @ wyłącza warnings
{
echo($wiersz[0].$wiersz[2]) // to wyświetli z tego $wiersz któy jest zwracany jako tablica z indeksami numerycznymi pierwszą i trzecią kolumnę
}
więc taki kody spowoduje wypisanie pierwszej i trzeciej kolumny ze wszystkich wierszy.
Jak jesteś ambitny to kombinuj, jak nie to napisz że dasz pomógł i w 15 minut ktoś się znajdzie napewno kto zrobi to za Ciebie
marian84
22.02.2008, 21:21:39
$pobranyadres= mysql_query('SELECT mail FROM subskrybcja');
while($wiersz=@mysql_fetch_row($pobranyadres))
{
$adres=$wiersz
}
Wymyslilem coś takiego... ale to chyba nie jest za wiele warte... jak ktos pomoże to dam pomógł... ambicje trzeba schowac w kieszeń
netmare
22.02.2008, 21:24:56
$wiersz to tablica, z zapytania wynika, że pobierasz jedną kolumnę więc $adres=$wiersz[0]
za każdym razem z tym $adres musisz wywołać mail() i chyba będzie śmigać jeśli w temat i treść dołożysz wartości przesłane z formularza
nowotny
22.02.2008, 21:26:31
$wiersz to jest tablica... jak nie wiesz jak pracować z tablicami to najwyższy czas się dokształcić... Poza tym zakładam że chcesz wysyłać newsletter na adresy wszystkich osób z tabeli subskrypcja... funkcję
mail" title="Zobacz w manualu PHP" target="_manual też musisz wtedy umieścić w pętli... Nie wspominając już o tym że przy większej ilości adresów skrypt i tak ci się wykopyrtnie po jakimś czasie...
marian84
22.02.2008, 21:49:54
Nie przewiduje zeby adresow bylo az tak duzo...
Wiec wyszlo cos takiego:
Kod
<?php
$temat = $_POST['temat'];
$zawartosc = $_POST['zawartosc'];
$con = mysql_connect('localhost', 'root', 'krasnal');
if (mysql_error()) die('Database connection error: '. mysql_error());
mysql_select_db('adresy', $con);
if (mysql_error()) die('Database selection error: '. mysql_error());
$adres= mysql_query('SELECT mail FROM subskrybcja');
while($wiersz=@mysql_fetch_row($adres))
{
$adres=$wiersz[0];
mail($adres, $temat, $zawartosc);
}
mysql_close($con);
?>
Czy dobrze??
netmare
22.02.2008, 21:54:17
na pierwszy rzut oka OK, weź sobie wstaw swój mail do bazy, jak dojdzie do Ciebie to do innych też.
Jednak jest błąd $adres używasz w róznych znaczeniach napoczątku jako rezultat całęgo zapytania przy mysql_query i mysql_fetch_row , a później jako właściwy adres przy mailu, zwyczajowo ta mienna na początku nazywa się $result i przechowuje rezultat wykonania zapytania.
marian84
22.02.2008, 21:58:06
Wszystko prawie dobrze... z malym szczegolem....
Warning: mail(): SMTP server response: 550 Invalid recipient:
Uzywam krasnala do testow... czy to moze byc przyczyna błędu?? jak tak to może można to jakoś obejść lub poprawic?
netmare
22.02.2008, 22:01:36
Jak już mówiłem mail() nie używałem, a ten komunikat oznacza że nieprwidłowy adresat ;P kombinuj. Tyle pomocy dostałeś że trochę musisz się wykazać ;P
marian84
22.02.2008, 22:07:02
Ok, dzięki....
Wystarczylo dodać w while:
$dodatki="From: adres@adres.pl";
mail($adresy, $temat, $zawartosc, $dodatki);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.