Look here,please!



Mam zase takovej menší problémek...MailNews na http://javascript.czweb.org

Zdroják:
<?
include "db.php";
$vysledek = MySQL_Query("SELECT mail FORM odberatele");
while ($zaznam = MySQL_Fetch_Array($vysledek))
$prijemce = $zaznam["mail"];
$mail = mail("$prijemce","Novinky na http://javascript.czweb.org/",$text, "FORM: JavaScript Page - novinky <info@javascript.czweb.org>");

if(!$mail):
echo ("<font color=red><h1>Nepovedlo se mail odeslat :-(</h1></font>");
else:
echo ("<h1>OK!Dopis se v pořádku odeslal všem odběratelům :-)</h1>");
endif;

?>
No a chyba :


Warning: Supplied argument is not a valid MySQL result resource in /3w/web2001.cz/p/php/mailnews/poslat.php on line 4


Ptrostě mi to napíše "OK!Dopis se v pořádku odeslal všem odběratelům :-)" no, ale ve skutečnosti se ne odešle nic :-(
neni ciste nahodou include("parametrL");
<?
include "db.php";
$vysledek = MySQL_Query("SELECT mail FORM odberatele"); //FROM a ne FORM
while ($zaznam = MySQL_Fetch_Array($vysledek)) : //tady chyběla dvojtečka

$prijemce = $zaznam["mail"]; //jednoduché uvozovky a ne dvojité
$mail = mail("$prijemce","Novinky na http://javascript.czweb.org/",$text, "FORM: JavaScript Page - novinky <info@javascript.czweb.org>"); //FROM a ne FORM
endwhile; //tady chybělo endwhile

if(!$mail):
echo ("<font color=red><h1>Nepovedlo se mail odeslat :-(</h1></font>");
else:
echo ("<h1>OK!Dopis se v pořádku odeslal všem odběratelům :-)</h1>");
endif; // proč ty závorky u echo ? Když Ti to ale nehází chybu, tak to asi může být. Já taky používám závorky u include a nejsou potřeba :)

?>

Nějak nemůžu přijít na kloub té dvojtečkové syntaxi :), takže ještě jednou po mém :

<?
include ("db.php");
$vysledek = MySQL_Query("SELECT mail FROM odberatele");
while ($zaznam = MySQL_Fetch_Array($vysledek)) {
$prijemce = $zaznam['mail'];
$mail = mail("$prijemce","Novinky na http://javascript.czweb.org/",$text, "FROM: JavaScript Page - novinky <info@javascript.czweb.org>");
}

if(!$mail) {
echo "<font color=red><h1>Nepovedlo se mail odeslat :-(</h1></font>";
} else {
echo "<h1>OK!Dopis se v pořádku odeslal všem odběratelům :-)</h1>";
}
?>

Možná jsem ještě něci přehlédl, ale mělo by to být o něco lepší, než ten Tvůj výtvor.
Já bych dal endwhile; až za ty podmínky. Takhle ti to vypíše varování, pokud neodejde pouze poslední e-mail nebo naopak napíše ti O.K. a odešel právě jen ten poslední.

include "./db.php";

$vysledek = MySQL_Query("SELECT mail FROM odberatele");
while ($zaznam = MySQL_Fetch_Array($vysledek)):
$prijemce = $zaznam['mail'];
$mail = mail("$prijemce","Novinky .....", $text, "FROM: .....");
if (!$mail):
$chyba = "Nepodarilo se odeslat!";
break;
endif;
endwhile;

if (IsSet($chyba)):
echo $chyba;
else:
echo "O.K";
endif;

Ale stejně se mi ten skript moc nepozdává :)

PAVEL
No a ja bych zase poskladal všechny maily do jedné proměnné a pak to odeslal třeba :

$pocetemailu = mysql_num_rows($vysledek);
$i=1;
while($row = mysql_fetch_array($vysledek)) {
if($i!=$pocetemailu) {
$komu = $row['email'];
$komu = ","; //přidám čárku pro oddělení dalšího
} else { //pokud už je to poslední email
$komu = $row['email']
}
}

a pak bych to odeslal mail($komu, $co, $predmet, $hlavicky) a třeba ošetřil nějakou hláškou, když se nepovede. Takhle se mi totiž nelíbí xkrát volaná funkce mail, když ji stačí zavolat jednou. I když možná, když se zavolá jednou v podobě mail("prvni@email.cz, druhy@email.cz", "predmet", "text"); tak se možná taky vykoná dvakrát, ale nevím to přesně.
Ještě jsem zapomněl na $i++; před tu poslední závorku...
Nepise se
SELECT mail FORM odberatele
ale
SELECT mail FROM odberatele
na uplnej zacatek pridej $mail=false; mozna to je zbytecny, ale urcite je to lepsi udelat :-)
nevim
>>Nějak nemůžu přijít na kloub té dvojtečkové syntaxi

To já zase nemůžu přít na kloub té Tvojí syntaxi :o)
Mockrát díky lidi.....