Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ROZWIĄZANE] [PHP] Wysyłanie maili
Forum PHP.pl > Forum > PHP
Killerek
Witam mam taki kod php:
  1. <?php
  2. include('db.php');
  3.  
  4. if ($_POST["wyslane"]) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  5.  
  6. // filtrowanie treści wprowadzonych przez użytkownika
  7. $blad = "0";
  8.  
  9. // jeżeli nie ma żadnego błedu, użytkownik zostaje zarejestronwany i wysłany do niego e-mail z linkiem aktywacyjnym
  10. if ($blad == 0) {
  11.  
  12. $tytul_t = $_POST['tytul'];
  13. $tresc_t = $_POST['tresc'];
  14.  
  15. $q = mysql_query('SELECT * FROM uzytkownicy');
  16. while($dane = mysql_fetch_array($q)) {
  17.  
  18. $nick = $dane['username'];
  19. $email = $dane['mail'];
  20. $saldo = $dane['wallet'];
  21. $data = $dane['join_date'];
  22.  
  23. $headers .= 'MIME-Version: 1.0'. "\n"; // *5
  24. $headers .= "Content-Type: text/html; charset=utf-8\n";
  25. $headers .= "From: moj@mail.pl \n";
  26.  
  27. $result = @mail($email, $tytul_t, $wiadomosc_t, $headers);
  28. if ($result) {
  29. $komunikaty = '<div id="top_success">Wiadomość została wysłana</div>';
  30. } else {
  31. $komunikaty = '<div id="top_error">Wiadomość nie została wysłana</div>';
  32. }
  33.  
  34. }
  35.  
  36. }
  37. }
  38.  
  39. // tworzenie formularza HTML
  40. echo '<form name="settings" method="post" action="/uzytkownicy_email">
  41. <input type="hidden" name="wyslane" value="TRUE" />
  42. <label>Tytuł <span>Tytuł maila</span></label>
  43. <input type="text" name="tytul" value="">
  44. <label>Treść <span>Treść maila</span></label>
  45. <textarea name="tresc"></textarea>
  46.  
  47. <button type="submit" name="add">Wyślij wiadomość</button>
  48.  
  49. </form>';
  50.  
  51. ?>

Ma on za zadanie wysłać maile z formularza do zarejestrowanych użytkowników to działa ale:

Chcę gdy do formularza dodam zmienną i tekst np: "Witaj, {$nick}!" to {$nick} ma się zmienić na nick tego kto dostanie wiadomość. Gdy wpisze to co chcę i kliknę "Wyślij ..." to wiadomość dociera do każdego użytkownika ale nie podmienia {$nick} na nick użytkownika. Co zrobić?
styryl
A zamieniasz {nick} w zmiennej wiadmości?

http://php.net/manual/en/function.str-replace.php

coś takiego:

  1. $wiadomosc_t = str_replace('{$nick}', $nick, $wiadomosc_t);
Killerek
Cytat(styryl @ 25.06.2013, 11:00:05 ) *
A zamieniasz {nick} w zmiennej wiadmości?

http://php.net/manual/en/function.str-replace.php

coś takiego:

  1. $wiadomosc_t = str_replace('{$nick}', $nick, $wiadomosc_t);


Nie działa :/
nospor
1) Nigdzie nie widze, bys ustawial wartosc zmiennej $wiadomosc_t
2) To pokaz aktuallny kod z str_replace, ktory rzekomo ci nie dziala.....
Killerek
Cytat(nospor @ 25.06.2013, 13:25:14 ) *
1) Nigdzie nie widze, bys ustawial wartosc zmiennej $wiadomosc_t
2) To pokaz aktuallny kod z str_replace, ktory rzekomo ci nie dziala.....


  1. if ($blad == 0) {
  2.  
  3. $tytul_t = $_POST['tytul'];
  4. $wiadomosc_t = $_POST['tresc'];
  5.  
  6. $q = mysql_query('SELECT * FROM maile');
  7. while($dane = mysql_fetch_array($q)) {
  8.  
  9. $nick = $dane['username'];
  10. $email = $dane['mail'];
  11. $saldo = $dane['wallet'];
  12. $data = $dane['join_date'];
  13.  
  14.  
  15. $headers .= 'MIME-Version: 1.0'. "\n"; // *5
  16. $headers .= "Content-Type: text/html; charset=utf-8\n";
  17. $headers .= "From: moj@email.pl \n";
  18.  
  19. $wiadomosc_t = str_replace('{$nick}', $nick, $wiadomosc_t);
  20.  
  21. $result = @mail($email, $tytul_t, $wiadomosc_t, $headers);
  22. if ($result) {
  23. $komunikaty = '<div id="top_success">Wiadomość została wysłana</div>';
  24. } else {
  25. $komunikaty = '<div id="top_error">Wiadomość nie została wysłana</div>';
  26. }
  27.  
  28. }
  29.  
  30. }
nospor
No i jest ok. Skoro to ci nie dziala, znaczy ze w tresci nie masz tekstu {$nick}

Albo to:
$nick = $dane['username'];
jest puste smile.gif
Killerek
Cytat(nospor @ 25.06.2013, 13:51:25 ) *
No i jest ok. Skoro to ci nie dziala, znaczy ze w tresci nie masz tekstu {$nick}

Albo to:
$nick = $dane['username'];
jest puste smile.gif


Dzięki! Ale ze mnie jest idiota... Miałeś racje "$nick = $dane['username'];" miałem puste bo zamiast 'username' miało być 'nick' bo pomyliły mi się bazy bo we dwóch było to samo tylko inne nazwy tabel wink.gif

Mam jeszcze pytanie jak chcę dodać więcej zmiennych to mam dodać tak:

  1. $wiadomosc_t = str_replace('{nick}', $nick, $wiadomosc_t);
  2. $wiadomosc_t = str_replace('{data}', $data, $wiadomosc_t);


Czy jakoś inaczej?
nospor
Mozesz tak a mozesz tez zajrzec do manuala i zobaczyc ze str_replace przyjmuje tablice..... Jakis nawal leni dzisiaj czy jak.... tongue.gif
Killerek
Cytat(nospor @ 25.06.2013, 14:01:11 ) *
Mozesz tak a mozesz tez zajrzec do manuala i zobaczyc ze str_replace przyjmuje tablice..... Jakis nawal leni dzisiaj czy jak.... tongue.gif


Mam takie coś:

  1. $zmienne1 = array('{nick}', '{email}', '{saldo}', '{data}');
  2. $zmienne2 = array($nick, $email, $saldo, $data);
  3. $wiadomosc_t = str_replace($zmienne1, $zmienne2, $wiadomosc_t);


Ale gdy wyślę maila do wysyła do każdego użytkownika 1 mail ale jeżeli do treści dodam {nick} to do każdego wysyła treść maila z nickiem osoby, której rekord w bazie jest pierwszy. Co zrobić?

Maile wysyłam w pętli.
nospor
Hehe, no tak smile.gif
Nie mozesz nadpisywac oryginalnej wiadoosci, bo potem nie ma co juz zamieniac

$w = str_replace('{$nick}', $nick, $wiadomosc_t);
$result = @mail($email, $tytul_t, $w, $headers);

smile.gif
Killerek
Cytat(nospor @ 25.06.2013, 14:29:13 ) *
Hehe, no tak smile.gif
Nie mozesz nadpisywac oryginalnej wiadoosci, bo potem nie ma co juz zamieniac

$w = str_replace('{$nick}', $nick, $wiadomosc_t);
$result = @mail($email, $tytul_t, $w, $headers);

smile.gif


Działa! Można zamknąć i dzięki za pomoc :-)
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.