Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql]Bardzo prosty newsletter
Forum PHP.pl > Forum > Przedszkole
marian84
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
tzn czego nie wiesz?? wszystkiego??
marian84
No moze nie wszystkiego....

Wiem jak polaczyc się z bazą, pozniej chyba musze zrobic formularz z polami tekstowymi + jakis submit... tylko co dalej questionmark.gif
netmare
no dalej plik php z pętlą wyciągającą adresy z bazy i funkcja mail()
marian84
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
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
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 questionmark.gif tongue.gif
netmare
Ode mnie nie ;P gotowiec znajdziesz napewno w postaci przykładu na pl.php.net jak znajdziesz sobie tą funkcję ;P
marian84
czytam, czytam... metlik w glowie jeszcze większy... pomocy! smile.gif
netmare
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 winksmiley.jpg
marian84
$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ń sad.gif
netmare
$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 winksmiley.jpg
nowotny
$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
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
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
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
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.