Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Formularz i skrypt wysyłający emaile zapisane w bazie
Forum PHP.pl > Forum > Przedszkole
tinware
Witam.

Ostatnio napisałem skrypt, w którym użytkownicy mogą rejestrować się na mojej stronie poprzez podanie swojego loginu, hasla, emaila itd.
Z panelu mam możliwość zarządzania (edytowania, usuwania). Chciałem dodać kolejną opcję: wysyłania wiadomości do zarejestrowanych osob, tzw. subskrypcji. Skrypt miałby ściągnąć z bazy z wszystkich rekordów emaile i po dodaniu tresci wiadomości wysłać je jako ukrytą kopie zapasową, aby dany użytkownik nie mógł podejrzeć na poczcie pozostałych adresów, na które została wysłana ta sama wiadomość. Napisałem formularz i chciałem otrzymać pomoc w zakresie wykonania skryptu, ktory ściągał by emaile z bazy.

  1. <a href="?go=users_send">Wyslij wiadomosc subskrypcji</a><br><br><br>
  2.  
  3. <?
  4. include('mysql.php');
  5.  
  6.  
  7. if ($_GET['go'] == 'users_send') {
  8. echo "<FORM METHOD=POST action=\"?go=users_save\">";
  9. echo "<INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"send\">";
  10. echo "<input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Moj email
  11. echo "<input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Wyslij do mnie
  12. echo "<input type=\"hidden\" name=\"email\"><br>"; /// Kopia zapasowa do wszystkich uzytkownikow zapisanych w bazie
  13. echo "Temat: <input type=\"text\" name=\"subject\" style=\"width: 300px\"><br>"; /// Temat wysylanej wiadomosci do wszystkich uzytkownikow
  14. echo "Tresc: <textarea name=\"tresc\" style=\"width: 310px; height: 95px; \"></textarea><br>"; /// Tresc wysylanej wiadomosci do wszystkich uzytkownikow
  15. echo "<INPUT TYPE=\"submit\" VALUE=\"Wyslij wiadomosc\">"; /// Submit wyslania napisanej wiadomosci
  16. }
  17.  
  18.  
  19.  
  20. if ($_GET['go'] == 'users_save') {
  21. echo "Twoja wiadomosc zostala rozeslana";
  22. }
  23.  
  24.  
  25. ?>


Tabela: Users
i z rekordów:
$email - zawiera adresy zarejestrowanych użytkowników
$subskrypcja - wypełniona selectem jako TAK lub NIE, czyli wiadomość subskkrypcji może docierać tylko do osób ktore mają wypełnione to jako TAK.
kokers
ściągnięcie z bazy to zwykly select gdzie subskrypcja=tak.

wysłanie emaili tak żeby odbiorcy się nie widzieli:
poczytaj o additional headers w funkcji:
http://pl.php.net/manual/en/function.mail.php

i Bcc.
tinware
Niestety, nie zbyt znam angielski, żeby coś zrozumieć na tamtej stronie...

  1. $wynik = mysql_query ("SELECT email FROM Users WHERE subskrypcja='Tak'");
  2. $i=0;
  3. $ile = mysql_num_rows($wynik);
  4. while ($rekord = mysql_fetch_assoc ($wynik))
  5. {
  6. $email = stripslashes( ($rekord['email']));
  7. $subskrypcja = stripslashes( ($rekord['subskrypcja']));
  8.  
  9. /// Tutaj formularz
  10.  
  11. }


Są jakieś błędy ?
kokers
specjalnie dla ciebie po polsku..:
http://pl.php.net/manual/pl//function.mail.php

z jedną uwagą.
najpierw pobierz listę adresów email, a potem jak już będziesz tworzył funkcję mail, adresy email możesz "podzielić" funkcją explode.

ps. jeśli nie rozumiesz dokumentacji po angielsku, to radzę ci się tego języka szybko go nauczyć.
tinware
Jak to wygląda?

  1. <a href="?go=users_send">Wyslij wiadomosc subskrypcji</a><br><br><br>
  2.  
  3. <?
  4. include('mysql.php');
  5.  
  6.  
  7. if ($_GET['go'] == 'users_send') {
  8.  
  9. $wynik = mysql_query ("SELECT email FROM Users WHERE subskrypcja='Tak'");
  10. $i=0;
  11. $ile = mysql_num_rows($wynik);
  12. while ($rekord = mysql_fetch_assoc ($wynik))
  13. {
  14. $email = stripslashes( ($rekord['email']));
  15. $subskrypcja = stripslashes( ($rekord['subskrypcja']));
  16.  
  17. echo "<FORM METHOD=POST action=\"?go=users_save\">";
  18. echo "<INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"send\">";
  19. echo "<input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Moj email
  20. echo "<input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Wyslij do mnie
  21. echo "<input type=\"hidden\" name=\"email\"><br>"; /// Kopia zapasowa do wszystkich uzytkownikow zapisanych w bazie
  22. echo "Temat: <input type=\"text\" name=\"temat\" style=\"width: 300px\"><br>"; /// Temat wysylanej wiadomosci do wszystkich uzytkownikow
  23. echo "Tresc: <textarea name=\"tresc\" style=\"width: 310px; height: 95px; \"></textarea><br>"; /// Tresc wysylanej wiadomosci do wszystkich uzytkownikow
  24. echo "<INPUT TYPE=\"submit\" VALUE=\"Wyslij wiadomosc\">"; /// Submit wyslania napisanej wiadomosci
  25. }
  26.  
  27.  
  28.  
  29. if ($_GET['go'] == 'users_save') {
  30.  
  31. bool mail ( string $email , string $temat , string $tresc )
  32. echo "Twoja wiadomosc zostala rozeslana";
  33. }
  34.  
  35.  
  36. ?>
guilty82
Nie kopiuj opisu z manuala, jeśli już to przykłady.

  1. if ($_GET['go'] == 'users_save') {
  2.  
  3. $email = 'do_kogo@ex.com';
  4. $temat = $_POST['subject'];
  5. $tresc = $_POST['tresc'];
  6.  
  7. if(mail ($email, $temat, $tresc ))
  8. echo "Twoja wiadomosc zostala rozeslana";
  9.  
  10. }
kokers
skoro nie potrafisz posługiwać się manualem, google twoim przyjacielem

kurs, prosty newsletter php i jazda.

zacznij może od podstaw, jakąś książkę. na skróty się nie da.

np tutaj możesz zajrzeć http://www.ygreg.com/artykuly.php do części trzeciej.

już abstrahując od tego, że jeśli masz dużo kodu html to po co wywalać go całego poprzez echo i męczyć się z \.

Lepiej już:

  1. $subskrypcja = stripslashes( ($rekord['subskrypcja'])); ?>
  2.  
  3. <FORM METHOD=POST action=\"?go=users_save\">";
  4. <INPUT TYPE=\"hidden\" NAME=\"action\" VALUE=\"send\">";
  5. <input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Moj email
  6. <input type=\"hidden\" name=\"djplate@mp3.pl\">"; /// Wyslij do mnie
  7. <input type=\"hidden\" name=\"email\"><br>"; /// Kopia zapasowa do wszystkich uzytkownikow zapisanych w bazie
  8. Temat: <input type=\"text\" name=\"temat\" style=\"width: 300px\"><br>"; /// Temat wysylanej wiadomosci do wszystkich uzytkownikow
  9. Tresc: <textarea name=\"tresc\" style=\"width: 310px; height: 95px; \"></textarea><br>"; /// Tresc wysylanej wiadomosci do wszystkich uzytkownikow
  10. <INPUT TYPE=\"submit\" VALUE=\"Wyslij wiadomosc\">"; /// Submit wyslania napisanej wiadomosci
  11.  
  12. <?php
  13. }


nie chce mi się usuwać tych wszystkich już niepotrzebnych znaczków i komentarzy, ale podgląd o co mi chodzi powinieneś mieć. W tym długim bloku (formularz) nie używasz żadnej zmiennej z php ani nic, więc po co to echo wyświetlać.
i tagi powinno się wpisywać małymi literami.
tinware
Cytat(guilty82 @ 1.03.2011, 14:26:06 ) *
  1. if ($_GET['go'] == 'users_save') {
  2.  
  3. $email = 'do_kogo@ex.com';
  4. $temat = $_POST['subject'];
  5. $tresc = $_POST['tresc'];
  6.  
  7. if(mail ($email, $temat, $tresc ))
  8. echo "Twoja wiadomosc zostala rozeslana";
  9.  
  10. }


Interesuje mnie wiersz:
  1. $email = 'do_kogo@ex.com';


Jeśli dobrze rozumie, wiadomość będzie wysyłana pod adres, który podam w $email
W jaki sposób zrobić, aby był on wysłany pod adresy ściągnięte z bazy przy $subskrypcja=Tak ?


Jak to wygląda w tej chwili ?
http://pastebin.pl/37292
modern-web
Pozwolicie, że podepnę się do tematu...
To proste; robisz zapytanie do bazy gdzie wybierasz tych użytkowników, którzy włączyli subskrypcje.
Następnie odczytujesz ich maile i dajesz do zmiennej. Następnie za pomocą pętli dodajesz ich jako adresatów.. smile.gif
Na pierwszy rzut oka wydaje się łatwe.
W razie czego wytłumaczę jaśniej... pisz jeśli czegoś nie rozumiesz.
Pozdrawiam!
tinware
Cytat(modern-web @ 1.03.2011, 20:26:48 ) *
Pozwolicie, że podepnę się do tematu...
To proste; robisz zapytanie do bazy gdzie wybierasz tych użytkowników, którzy włączyli subskrypcje.
Następnie odczytujesz ich maile i dajesz do zmiennej. Następnie za pomocą pętli dodajesz ich jako adresatów.. smile.gif
Na pierwszy rzut oka wydaje się łatwe.
W razie czego wytłumaczę jaśniej... pisz jeśli czegoś nie rozumiesz.
Pozdrawiam!

Wiem o co chodzi z tą pętlą, ale nie wiem jak ją wykonać. Wykonywałem ją już na wyswetlaniu newsow na stronie itd. Czy mogłbyś pokazac mi jak wyglada to na kodzie php, wkleilem go post wyzej...
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.