Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Formularz i skrypt wysyłający emaile zapisane w bazie
tinware
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kokers
post
Post #2





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

Ostrzeżenie: (0%)
-----


ś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.

Ten post edytował kokers 1.03.2011, 12:28:14
Go to the top of the page
+Quote Post
tinware
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

Ostrzeżenie: (0%)
-----


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 ?
Go to the top of the page
+Quote Post
kokers
post
Post #4





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował kokers 1.03.2011, 12:57:40
Go to the top of the page
+Quote Post
tinware
post
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
guilty82
post
Post #6





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post
kokers
post
Post #7





Grupa: Zarejestrowani
Postów: 154
Pomógł: 33
Dołączył: 18.10.2010
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kokers 1.03.2011, 14:44:39
Go to the top of the page
+Quote Post
tinware
post
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

Ostrzeżenie: (0%)
-----


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

Ten post edytował tinware 1.03.2011, 18:38:33
Go to the top of the page
+Quote Post
modern-web
post
Post #9





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


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.. (IMG:style_emoticons/default/smile.gif)
Na pierwszy rzut oka wydaje się łatwe.
W razie czego wytłumaczę jaśniej... pisz jeśli czegoś nie rozumiesz.
Pozdrawiam!
Go to the top of the page
+Quote Post
tinware
post
Post #10





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 23.08.2009
Skąd: Wołomin

Ostrzeżenie: (0%)
-----


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.. (IMG:style_emoticons/default/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...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 01:01