Mailing listem pojmenovávám věc, díky které budete moci informovat zájemce e-mailem. A seznam lidí, kteří by měli zájem o tyto informace si vytvoří lidé sami, zadáváním svých e-mailů do formuláře na webu.
Příklad formuláře, kterým můžete mailovou adresu přidat.
<form action="?vlozit=1" method="post">
<fieldset>
<label for="fun-text">e-mail pro zasílání novinek:</label>
<input type="text" name="funclub" id="fun-text" />
<input type="submit" value="ok" />
</fieldset>
</form>
Skript pro přidání e-mailové adresy do databáze.
zadani-mailu.php
<?php
mysql_connect ( "mysql.example.com", "uzivatel", "heslo" );
mysql_select_db("mailinglist");
/*spojení s databází*/
$funclub = $_POST['funclub'];
/*příjem proměnné, která je odesílána z formuláře*/
if ($_GET['vlozit'] == 1) {
/*kontrola, zda chce form. někdo odelslat*/
if (empty($funclub)) {
/*jestli je pole prázdné, vypíše se varování*/
echo "<small>Musíte vyplnit e-mailovou adresu!</small>";
}
$dotaz = "SELECT * FROM seznam WHERE mail='$funclub'";
$vysledky = mysql_query ($dotaz) or die (mysql_error());
$cislo = mysql_num_rows($vysledky);
/*kontrola, jestli zadaná e-mailová adresa již v databázi není*/
if ( $cislo == 0 and !empty($funclub)) {
$dotaz = "INSERT INTO seznam (mail) VALUES ('$funclub')";
$vysledky = mysql_query ($dotaz) or die (mysql_error());
/*vloží se adresa do DB*/
echo "<small class='vyrazny'>E-mail je uložen.</small>.";
/*Vypíše hlášku, která se zobrazí po přidání mailu do DB*/
} elseif (!empty($funclub)) {
echo "<small class='vyrazny'>Tento e-mail už v seznamu je!</small>";
/*Vypíše hlášku při shodě e-mailů v databázi*/
}
}
?>
Formulář, ze kterého budete moci maily odesílat. V jednom článku jsem již formulář pro odesílání mailů popsal.
<form action="?odeslat=1" method="post">
<fieldset>
<label for="predmet">Předmět:</label><br />
<input type="text" name="predmet" id="predmet" /><br />
<label for="text">Zpráva:</label><br />
<textarea name="zprava" id="text" rows="8" cols="20"></textarea><br />
<input type="submit" value="Odeslat" />
</fieldset>
</form>
Tohle je v podstatě lehce upravené odesílání mailu z formuláře, které jsem popisoval v jednom z předchozích návodů.
odeslani-mailu.php
<?php
mysql_connect ( "mysql.example.com", "uzivatel", "heslo" );
mysql_select_db("mailinglist");
/*spojení s databází*/
$odeslat = $_GET['odeslat'];
$predmet = $_POST['predmet'];
$text = $_POST['zprava'];
$headers = "From: Vase jméno <jmeno@cochcete.cz>\n";
if ( $odeslat == 1 and !empty($predmet) and !empty($text)) {
/*kontrola jestli jsou vyplněna potřebná pole*/
$vypis = "<h5>E-mail byl odeslán na tyto adresy:</h5>";
$dotaz = "SELECT * FROM seznam ";
$vysledky = mysql_query ( $dotaz) or die (mysql_error());
/*vybere z DB všechny údaje a načte je*/
while ($radek = mysql_fetch_array($vysledky)){
extract($radek);
mail($mail, $predmet, $text, $headers);
$vypis .= "<p>$mail</p>\n";
/*pro každý údaj zvlášť je odeslaný stejný mail*/
}
}
if ($odeslat == 1 and (empty($predmet) or empty($text))) {
$vypis = "<p>E-mail se nepodařilo odeslat. </p>";
/*vypíše hlášku, pokud nevyplníte nějaké pole formuláře*/
}
echo "$vypis";
?>
určitě jste si všimli, že u proměnné $vypis je ve skriptu nejdříve obyčejné "rovná se" (=) a dále ještě "tečka a rovná se" (.=). S tím jste se v mých skriptech dříve ještě asi nesetkali, tak vám to okomentuji teď.
Prostě (=) přidělí proměnné určitou hodnotu. A (.=) k té hodnotě přidá další hodnotu, kterou přidělíte proměnné se stejným názvem.
$vypis = "<h5>E-mail byl odeslán na tyto adresy:</h5>";
$vypis .= "<p>example@example.com</p>";
$vypis .= "<p>example2@example.com</p>";
$vypis .= "<p>example3@example.com</p>";
echo $vypis;
Tohle↑ vám do kódu vypíše toto:
<h5>E-mail byl odeslán na tyto adresy:</h5>
<p>example@example.com</p>
<p>example2@example.com</p>
<p>example3@example.com</p>
A protože se mail odesílá pro každou zprávu zvlášť, tak se i do proměnné $vypis uloží pokaždé zvlášť e-mailová adresa. A až je skript hotov, tak se jednoduše pomocí funkce echo vypíše vše co se do proměnné uložilo. Snad jsem to napsal dost srozumitelně.
Tyto dva soubory jsou na sobě nezávislé, ale oba závisí na databázi, do které jeden vkládá údaje a druhý ty údaje používá. Takže každý z těch skriptů můžete používat zvlášť třeba v jiné složce.
Pokud budete mít databázi e-mailových adres hodně rozsáhnlou, tak se nedivte, že bude celá akce chvíli trvat. V klidu počkejte dokud se vám nevypíší adresy, na které se to odeslalo.