Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] mailing + unikatowe klucze, Różne zmienne w każdym mailu
AdamT
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

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


Witajcie mistrzowie PeHaPa smile.gif

"Zacząłem jak rock'owiec winksmiley.jpg" - jak by rzekł M. Daniec

Potrzebuję następującej pomocy chciałbym wysłać do ok. 100 użytkowników przygotowanego maila w formie HTML. Jednak w tym mailu mają się znaleźć dwie lub trzy zmienne pobrane z bazy.
Konkretnie każdemu klientowi chciałbym wysłać indywidualny klucz, który jest zapisany w bazie.

Miało by to wyglądać w skrócie tak:

Na adres: $mail miała by zostać wysłana taka wiadomość:

Witaj $name twój unikatowy klucz to: $secret_code.

Struktura bazy wygląda tak

$id, $secret_code, $name, $surname, $mail, $phone, $confirm


Czy jest to do wykonania?



--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


Odpowiadając na Twoje pytanie: Tak.
Go to the top of the page
+Quote Post
Cienki1980
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Oczywiście że jest.
Wystarczy przygotować szablon maila tak, żeby w miejsca gdzie mają być podane wartości z bazy wstawiasz konkretne znaczniki. Czyli np:
Witaj #NAME#. Oto Twój kod: #CODE#

Następnie wyciągasz dane z bazy i w pętli robisz coś w tym stylu :
Kod
petla start
str_replace(#NAME#, $wartosc_z_bazy, mail_body);
str_replace(#CODE#, $wartosc_z_bazy, mail_body);
mail();
petla koniec


--------------------
404
Go to the top of the page
+Quote Post
AdamT
post
Post #4





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

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


No właśnie, tak myślałem, że trzeba jakąś pętle zrobić... tylko właśnie z tymi pętlami jest najgorzej sad.gif Nie bardzo wiem jak ją napisać :/


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


napisz jakiś kod i wróć to CI pomożemy, bo tak jak nic nie masz to....nie ma jak pomóc
http://php.net/manual/en/control-structures.while.php
Go to the top of the page
+Quote Post
AdamT
post
Post #6





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 22.01.2004
Skąd: LDZ

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


Zrobiłem coś takiego:

Kod
<?php

/* SEKCJA SQL */

require "config.php";

connection ();

$query_count = "SELECT COUNT(id) FROM `mailing`";
$result_count = mysql_query($query_count) or die ('Błąd zapytania');
// $display_count = mysql_fetch_array($result_count); // powinno mi policzyc ilosc rekordow a zwraca mi array :(

$query_data = mysql_query("SELECT * FROM `mailing`")
or die('Błąd zapytania');


/* SEKCJA MAILINGU */

$display_count = 5;

$from = "mail@domain.com";

$subject = "Ważna wiadomość!";

$charset = "utf-8";
            
$head =    "From: " . $from ."\r\n" .
        "MIME-Version: 1.0\r\n" .
        "Content-Type: text/html; charset=$charset\r\n" .
        "Content-Transfer-Encoding: 8bit";

$body1 = "<html>
        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
        <p class=\"hello\">Witaj,<br />
        <strong>#NAME#</strong></p>";
        
        
$body2 = "Twój unikatowy kod dostepu: <code>#CODE#</code></p>
        </html>";

if(mysql_num_rows($query_data) > 0) {
    while($r = mysql_fetch_assoc($query_data)) {
$to = $r['mail'];        
$str1 = str_replace('#NAME#', $r['name'], $body1);
$str2 = str_replace('#CODE#', $r['secret_key'], $body2);
        
if (!mail($to, "=?$charset?B?" . base64_encode($subject) . "?=", $str1.$str2, $head)){
                echo "<div class=\"info\">Wiadomość nie została wysłana</div>";
        }
    }
}

?>


Wszystko działa (chyba tak jak powinno), dzięki za naprowadznie smile.gif

Ten post edytował AdamT 21.05.2010, 15:50:56


--------------------
Hardware : <span style="font-weight: bold;">OrangePi+ 2E | 2GB RAM | HDD: 1TB </span>
Software : <span style="font-weight: bold;">Debian GNU/Linux 8 (jessie) 3.4.113-sun8i </span>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 11:18