Autor | Zpráva | ||
---|---|---|---|
MrKolouch Profil |
#1 · Zasláno: 3. 9. 2008, 21:46:40 · Upravil/a: MrKolouch
Ahoj,
nechával jsem si dělat script na hromadný e-mail pro členy mých stránek.Script byl zkotrolování i odborníkem,ale stále nefunguje.Nalezne někdo chybu? <HTML> <HEAD> <TITLE>Poslat emaily</TITLE> </HEAD> <BODY> <CENTER> <form action="odeslat.php" method="POST"> <BR> <TABLE> <TR> <TD COLSPAN=2 ALIGN=CENTER><h1>Poslat hromadnou zprávu:</h1> <TR><TD>Předmět:<TD><textarea cols="50" rows="1"></textarea> <TR><TD>Text:<TD><textarea cols="50" rows="20" name="text"></textarea> <TR><TD COLSPAN=2 ALIGN=CENTER> <BUTTON> Poslat </BUTTON> </table> </form> </CENTER> </BODY> </HTML> a ten script <? $bd_host = "localhost"; $bd_usuario = "login"; $bd_password = "heslo"; $bd_base = "název databaze"; $url = "http://www.cometbux.com"; $con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con); $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)): $i = 0; $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)): $prijemce = $zaznam["email"]; Mail($prijemce, $predmet, $text); $i = $i+1; endwhile; echo "<CENTER><BR><BR><BR>"; echo "Emaily byly odeslány."; echo "Bylo odeslano ".$i." mailu"; echo "</CENTER>"; ?> k databázi jsme se připojili,ověřeno.php funguje a mysql je také v pořádku. http://podpora.domenu.cz/?sid=25 připojení je zapsano zpravně. předem děkuji |
||
yFang Profil |
#2 · Zasláno: 3. 9. 2008, 21:49:30 · Upravil/a: yFang
MrKolouch
Nikde tam nevidím definované proměnné $predmet a $text. |
||
ninja Profil |
#3 · Zasláno: 3. 9. 2008, 21:49:46
MrKolouch: Nactou se z databaze nejaka data? Promene $predmet a $text mate vyplnene?
|
||
Alphard Profil |
#4 · Zasláno: 3. 9. 2008, 22:11:29
kromě výše zmíněného, co tohle? není to jen špatně zkopírované? (měnil jste příspěvek)
„ $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)): $i = 0; $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)):“ |
||
Warden Profil |
#5 · Zasláno: 4. 9. 2008, 13:11:12
Solidně si cyklíte dvě query za sebou...přitom žádný přínos v tom nevidím. Navíc jeden while není ukončen. Další problém je v proměnných. Proměnné predmet a text nejsou definované. Tak, jak to máte napsané, je navíc nutné mít zapnuté register_globals On, což není nejlepší řešení. Ale ani tak to nemůže fungovat správně, protože u textarey subjectu nemáte atribut name.
Doporučuji zapnutí vypisování php chyb a to E_ALL. |
||
MrKolouch Profil |
#6 · Zasláno: 4. 9. 2008, 18:09:13
díky za rady,chyby jsme opravili
Už to jde i odeslat a vypíše to toto: Emaily byly odeslány.Bylo odeslano 1845 mailu jenže žádný maily zatim nedošly. opraveny kod: <HTML> <HEAD> <TITLE>Poslat emaily</TITLE> </HEAD> <BODY> <CENTER> <form action="odeslat.php" method="POST"> <BR> <TABLE> <TR> <TD COLSPAN=2 ALIGN=CENTER><h1>Poslat hromadnou zprávu:</h1> <TR><TD>Předmět:<TD><textarea cols="50" rows="1" name="predmet"></textarea> <TR><TD>Text:<TD><textarea cols="50" rows="20" name="text"></textarea> <TR><TD COLSPAN=2 ALIGN=CENTER> <BUTTON> Poslat </BUTTON> </table> </form> </CENTER> </BODY> </HTML> a script: <? $bd_host = "localhost"; $bd_usuario = "login"; $bd_password = "heslo"; $bd_base = "název databaze"; $url = "http://www.cometbux.com"; $con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con); $i = 0; $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)): $prijemce = $zaznam["email"]; Mail($prijemce, $predmet, $text); $i = $i+1; endwhile; echo "<CENTER><BR><BR><BR>"; echo "Emaily byly odeslány."; echo "Bylo odeslano ".$i." mailu"; echo "</CENTER>"; ?> je v kodu další chyba? diky moc |
||
Anonymní Profil * |
#7 · Zasláno: 4. 9. 2008, 18:13:07
To je aká verzia PHP?
while ($zaznam=MySQL_Fetch_Array($vysledek)): nie náhodou? while ($zaznam=MySQL_Fetch_Array($vysledek)){ blabla } |
||
Mastodont Profil |
#8 · Zasláno: 4. 9. 2008, 19:28:55
Anonymní
Ehm. To jsou IMHO všechny verze PHP od zavedení while :-) |
||
Ssob Profil |
#9 · Zasláno: 4. 9. 2008, 19:48:00
MrKolouch
Funkce mail() vrací true v případě úspěchu a false v případě neúspěchu. Zkusil bych: ... $ret = Mail($prijemce, $predmet, $text); $i = $i + intval($ret); ... Pak teprve můžete s klidem vypsat "Bylo odeslano ".$i." mailu"; A btw: pořád tam nikde nevidím definování proměnných $predmet a $text. Takže před cyklus: $predmet = $_POST['predmet']; $text = $_POST['text']; |
||
MrKolouch Profil |
#10 · Zasláno: 4. 9. 2008, 20:12:56 · Upravil/a: MrKolouch
Ssob
když to upravim podle tvé rady: ... $con = mysql_connect($bd_host, $bd_usuario, $bd_password); mysql_select_db($bd_base, $con); $i = 0; $vysledek=mysql_query("select email from tb_users"); while ($zaznam=MySQL_Fetch_Array($vysledek)): $predmet = $_POST['predmet']; $text = $_POST['text']; $prijemce = $zaznam["email"]; $ret = Mail($prijemce, $predmet, $text); $i = $i + intval($ret); endwhile; echo "<CENTER><BR><BR><BR>"; ... tj.připsal jsem $predmet = $_POST['predmet']; $text = $_POST['text']; a zaměnil toto: Mail($prijemce, $predmet, $text); $i = $i+1; za toto: $ret = Mail($prijemce, $predmet, $text); $i = $i + intval($ret); tak to napíše,že se odeslalo 0 emailů |
||
Tin Profil |
#11 · Zasláno: 4. 9. 2008, 21:31:20
Aby šly odesílat maily, musí samozřejmě být správně nastavený server SMTP
|
||
Ssob Profil |
#12 · Zasláno: 4. 9. 2008, 22:29:02
MrKolouch
„tak to napíše,že se odeslalo 0 emailů“ Z toho vyplývá, že funkce mail() ani jednou neproběhla správně, čili se nepodařilo poslat ani jeden mail. Řekl bych, že bude chyba někde v nastavení mailového serveru jak píše Tim. A ještě poznámka na konec: <pre> $predmet = $_POST['predmet']; $text = $_POST['text']; </pre> I když to na funkcionalitu nebude mít žádny vliv, tak by bylo vhodnější posunout tyto dva řádky před while. |
||
Časová prodleva: 16 let
|
0