Zdravíčko.
Mám malý problém, na svoje stránky jsem si vytvořil script který bude odesílat mnou zadané zprávy do formuláře.... tato zprávy by se v budoucnu měli odesílat všem kteří se přihlásí a tím zapíší svou emailovou adresu do databáze.. tady je zpracovávací kód
-------------------------------------------------------
<h1 class="title">Rozesílání</h1>
<hr />
<?php
db_connect();
$dotaz = "SELECT * FROM novinky";
$result = mysql_query($dotaz,$link);
$pocet = mysql_num_rows($result);
while($prijemce=mysql_fetch_array($result)) echo "<p>$prijemce[mail]</p><br />";
//zadání vstupních hodnot
$predmet=$HTTP_POST_VARS[predmet];
$zprava=$HTTP_POST_VARS[novinka];
$address="$prijemce";
$subject="Novinky z Smycmaweb";
$message = "
<style type='text/css'>.....
----------------------------------------------------------------------------
jak vidíte v dolní části jsou položky predmet, zprava, a address
jenže já nevím jak mám vytovřit přes porměnnou to aby pod položkou address byly všechny e-maily v databázi , spojení s databází je funkční a samotné e-maily fungují když do address dám nějaký e-mail tak se to nádherně odešle tak jak má ale nevím jak mám obsah databáze s e-maily dostat pod nějakou jednu proměnnou aby se to odesílalo ten script sice hálí odesláno ale zprávy se neodesílají.... mlžete mi nějak poradit??
Danná proměnná bude vypadat takto - $promenna = "SELECT * FROM maily";
kdy "maily" je název sloupce tabulky obsahující všechny emailové adresy. Tak bych to asi řešil já. Úplně se v tom skriptu nevyznám a nevidím strukturu databáze, takže netuším jestli to půjde.. Zkuste a řekněte.
tak ani to nefunguje... na databázi toho moc není je tam jen tabulka novinky a v ní jeden sloupec maily typu varchar(40) s porovnáváním cp1250_czech_cs
Posílám celý script na kterém to vázne
------------------------------------------------
$dbhost="*********";
$dbusr="********";
$dbpassw="********";
$dbname="**********";
@$link=mysql_pconnect($dbhost,$dbusr,$dbpassw) or die("<p>Server nepřipojen !!!</p>");
@$db=mysql_select_db($dbname,$link) or die("<p>Databáze nebyla nalezena !!!</p>");
$dotaz = "SELECT * FROM novinky";
$result=mysql_query($dotaz,$link);
$pocet=mysql_num_rows($result);
echo "<p>Databáze obsahuje celkem: $pocet záznamů.</p>";
while($polozka=mysql_fetch_array($result)) echo "<p>$polozka[mail]</p>";
//zadání vstupních hodnot
$predmet=$HTTP_POST_VARS[predmet];
$zprava=$HTTP_POST_VARS[novinka];
$address="$dotaz";
$subject="Novinky z Smycmaweb";
$message = "
<style>
.text {
text-align: left;
Color: #000066;
font-family: verdana, sans-serif;
font-size: 12px;
font-weight: bold;
text-decoration: none;
}
.text_c {
text-align: left;
Color: #BC0000;
font-family: verdana, sans-serif;
font-size: 12px;
font-weight: bold;
text-decoration: none;
}
</style>
<p>Novinky z Smycmaweb</p>
<table>
<tr>
<td><p>Co nového:</p></td>
<td><p>$predmet</p></td>
</tr>
<tr>
<td><p>Zpráva:</p></td>
<td><p>$novinka</p></td>
</tr>
</table>";
$headers="MIME-Version: 1.0\n";
$headers.="Content-type: text/html; charset=windows-1250\n";
$headers.="From: Smycmaweb\n";
mail($address,$subject,$message,$headers);
echo "<p>Novinky rozeslány</p>";
Dobrý večer,
samotné ukládání tedy e-mailů do databáze funguje, ale pokud chcete e-maily odeslat, do políčka příjemce se všechny e-maily z databáze nevloží - funguje to tedy jen pokud napíšete příjemcovu adresu ručně? Rozumím tomu správně?
naprosto správně nicméně ale chybu scriptu to nehází vypisuje mi to tak jsem jsem si to udělal že zrávy byly rozeslány ale není tomu tak
Dobrý večer,
zkuste vložit do SQL příkazu s výpisem e-mailu vložit LIMIT, tedy přesně "LIMIT 1,1".
Tímto by se vám měla vložit jen jedna adresa. Pokud se e-mail odešle, bude zřejmě problém se samotným výpisem všech adres - napadá mě, zda-li máte jednotlivé adresy oddělené znakem ";"?
jak jako oddělené ; jsou v databázi v tabulce která má jeden sloupec v němž jsou adresy, trochu jsem nepochopil co máte na mysli, nicméně už skutečně nevím jak dál, ptal jsem se ve více poradnách jedna byla specializovaná přímo na programování, ale ať mi poslali rady, či hotové scripty nic nezabralo
nehledě na to že ať jsem použil cokoli z toho co mi kdo poslal tak mi to ještě vypisovalo chyby v kódu
Pokud chcete odesílat e-mail na více adres, musí být adresy oddělené znakem tímto znakem ";" - tedy: ; ; mourek@cone.com
Napadlo mě, že možná ve vašem případě se adresy řadí za sebou a spojují se dohromady a POST pak neví, o jaké adresy se jedná...
Problém byl vyřešen použil jsem cyklus while do kterého jsem všechno co se mělo odesílat včetně funkce mail... předtím to nešlo protže v zípisu $polozka[mail] byla chyba páč sloupec v tabulce databáze se nemenuje mail ale maily
---------------------
........
while($polozka=mysql_fetch_array($result)){
echo "$polozka[maily]<br>";
//zadání vstupních hodnot
$address=$polozka[maily];
$predmet=$HTTP_POST_VARS[predmet];
$zprava=$HTTP_POST_VARS[novinka];
$subject="Novinky z Smycmaweb";
$message = "
<h2>Novinky z Smycmaweb</h2>
<h3>$predmet</h3>
<p>$novinka</p><br><br>
";
$headers="MIME-Version: 1.0\n";
$headers.="Content-type: text/html; charset=windows-1250\n";
$headers.="From: Smycmaweb\n";
mail($address,$subject,$message,$headers);
}
.....
¨-----------------------------
takto vypadá použitý script
všem děkuji za snahu