Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] mailing + unikatowe klucze
Forum PHP.pl > Forum > Przedszkole
AdamT
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?

tehaha
Odpowiadając na Twoje pytanie: Tak.
Cienki1980
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
AdamT
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ć :/
tehaha
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
AdamT
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
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.