Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Problém s rozesíláním E-mailu na více adres najednou

Dobrý den mám menší problém se scriptem přes který by se měly hromadně odesílat e-maily na adresy které jsou zapsány v databázi...
každý kdo má zájem mlže tam svou adresu zapsat...

$dbhost="***********";
  $dbusr="********";
  $dbpassw="********";
  $dbname="*********";
  @$link=mysql_pconnect($dbhost,$dbusr,$dbpassw) or die("<p class='nadpis'>Server nepřipojen !!!</p>");
  @$db=mysql_select_db($dbname,$link) or die("<p class='nadpis'>Databáze nebyla nalezena !!!</p>");
  $dotaz = "SELECT * FROM novinky";
  $result=mysql_query($dotaz,$link);
  $pocet=mysql_num_rows($result);
  echo "<p class='nadpis'>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 type='text/css'>
      .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 class='text'>Novinky z Smycmaweb</p>
    <table>
      <tr>
        <td width='120'><p class='text'>Co nového:</p></td>
        <td><p class='text_c'>$predmet</p></td>
      </tr>
      <tr>
        <td width='120'><p class='text'>Zpráva:</p></td>
        <td><p class='text_c'>$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 class='nadpis'>Novinky rozeslány</p>";

Toto je script na kterém to vázne mezi deklarovanými proměnnými je také položka address do které když napíšu pevnou adresu tak všechno šlape jak má ale potřeboval bych tam nějak dostat nějakou proměnou která by brala všechny záznamy ve sloupci tabulky s adresami v databázi...
prosté
$promenna = SELECT * FROM novinky;........ nestaci a nefunguje
prosím o pomoc

loading...
Předmět Autor Datum
<?php $dbhost="***********"; $dbusr="********"; $dbpassw="********"; $dbname="*********"; mysql_conn…
dan55 25.04.2010 20:14
dan55
To jsi ho moc nepotěšil. ad odpoved $promena=select * from rozhodne napsat nelze, musis to projit…
AZOR 25.04.2010 20:23
AZOR
ad druha poznamka, viz v tom scritu fce "htmlspecialchars"
AZOR 25.04.2010 20:24
AZOR
Já mu to chtěl vysvětlit, ale než jsem to odeslal, tak jsi byl první. Bylo to skoro stejné jako to t…
dan55 25.04.2010 20:32
dan55
Ta druha je na dotazy msql, pokud se nepletu a jinak jsou měněny znaky (apostrofy apod) o proti html…
AZOR 25.04.2010 21:49
AZOR
pokud vím, tak jestli zadáš $neco[ahoj] tak ahoj musí být definováno (např. define("ahoj","nazdar");…
dan55 25.04.2010 21:56
dan55
bohužel nereaguje a když dám rozeslat tak mi to napíš že bylo rozesláno ale u to je taky nasáno War…
Smycma 25.04.2010 20:43
Smycma
za ty dotazy dej echo mysql_error(); a na začátek souboru error_reporting(E_ALL); pak sem hoď ch…
dan55 25.04.2010 20:47
dan55
Notice: Undefined index: mail in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 35 Notice: Use…
Smycma 25.04.2010 20:52
Smycma
Notice: Undefined variable: link in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 29 Warning:…
Smycma 25.04.2010 20:55
Smycma
zkus mysql_select_db($dbname,$link); za mysql_select_db($dbname);
dan55 25.04.2010 21:21
dan55
ale to už tam mám
Smycma 25.04.2010 21:25
Smycma
Notice: Undefined variable: link in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 29 link = $…
dan55 25.04.2010 21:30
dan55
hmm tak teˇuž vážně nevím
Smycma 25.04.2010 21:38
Smycma
novinka? nechybi to tam? promena je pak jak zpava.
AZOR 25.04.2010 21:45
AZOR
<td><p class='text_c'>$novinka</p></td> -> <td><p class='text_c'>$zparava</p></td>
AZOR 25.04.2010 21:46
AZOR
Jo teď jsem si všiml $zprava=htmlspecialchars($_REQUEST["novinka"]); zkusit nahradit za $novinka=htm…
dan55 25.04.2010 21:49
dan55
hmm taky nic když tam mám ten script svůj tak to nefunguje ale nevypisuje to chyby když tam dám to v…
Smycma 25.04.2010 21:57
Smycma
No nic, jdu spát, pokud nikdo neporadí, tak to vyzkouším na mém webu a odladím
dan55 25.04.2010 22:03
dan55
Ad Tvůj script : jak už Ti tady napsali v předchozích odpovědích, proměnnou $address je nutno plnit…
hynajs 25.04.2010 23:03
hynajs
Ranní dodatek : Řádek while($polozka=mysql_fetch_array($dotaz)) opravovat nemusíš, bylo by to sice…
hynajs 26.04.2010 08:02
hynajs
dostal jsem se obět do fáze že to nefunguje ale taky to nehází chybu.... teť bych potřeboval pomoct…
Smycma 26.04.2010 11:34
Smycma
for je na toto absolutně zbytečný
dan55 26.04.2010 11:39
dan55
zkoušel jsi ten cyklus while ..... , který navrhnul dan55 ? Ten se zdá opticky v pořádku. I kdyby ta…
hynajs 26.04.2010 11:49
hynajs
Pokud to nepůjde, tak to vyzkouším u mě na serveru a pak napíšu, jestli to je chyba scriptu
dan55 26.04.2010 12:06
dan55
Tak mi to nedalo, a script jsem vyzkoušel Struktura DB: email (varchar 100 cp1250) a id (int8,autoIn… poslední
dan55 26.04.2010 16:34
dan55
<?php
$dbhost="***********";
$dbusr="********";
$dbpassw="********";
$dbname="*********";
mysql_connect($dbhost,$dbusr,$dbpassw);
mysql_select_db($dbname,$link);
$dotaz=mysql_query("SELECT mail FROM novinky");
$pocet=mysql_num_rows($dotaz);
echo "<p class='nadpis'>Databáze obsahuje celkem: ".$pocet." záznamů.</p>";
while($polozka=mysql_fetch_array($dotaz)){ 
$predmet=htmlspecialchars($_REQUEST["predmet"]);
$zprava=htmlspecialchars($_REQUEST["novinka"]);
$subject="Novinky z Smycmaweb";
$message="
<style type='text/css'>
.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 class='text'>Novinky z Smycmaweb</p>
<table>
<tr>
<td width='120'><p class='text'>Co nového:</p></td>
<td><p class='text_c'>".$predmet."</p></td>
</tr>
<tr>
<td width='120'><p class='text'>Zpráva:</p></td>
<td><p class='text_c'>".$novinka."</p></td>
</tr>
</table>";
$headers="MIME-Version: 1.0\n";
$headers.="Content-type: text/html; charset=windows-1250\n";
$headers.="From: Smycmaweb\n";
if(mail($polozka["mail"],$subject,$message,$headers)){
  echo"<p>Na email <i>".$polozka['mail']." </i> byly odeslány informace o novinkách</p>";
}
}
echo "<p class='nadpis'>Novinky rozeslány</p>";
?>

ale i tak tam nějaká chybka možná bude :-)

To jsi ho moc nepotěšil.

ad odpoved

$promena=select * from

rozhodne napsat nelze, musis to projit nejakym zpusobem v cyklu a pro kazdy radek databaze provest nejakou akci, kde provest nejakou akci znamena
a) vytvorit z toho jednu promenou, pr jmeno=jmeno.";".dalsiRadekVyseldkuSelectu
b) poslat email v cyklu ve kterem proczazis radky.

dale select * from = nejspise hodi vice nez jeden sloupec a proto se musis odkazovat na nej, bud poradovym cislem, jmenem ci vyslectovat jen ten sloupec. Pokud je to jednosloupcova tabulka, tak je to ok, i kdyz je lepsi sloupce vyjmenovavat.
---
dale nespis NIKDY dovolit aby nikdo odesilal, dotazoval se do databaze ci jakkoliv pracoval s tvym kodem, a tedy pred pridelenim promne ji musis "escapova" tudis pridat znaky, ktere odstrani specialni znaky, ktere by mohl uzivatel zadat. Kdyz to neudelas program funguje dobre, dokud tam chodi Kubik, Vašek, Marta, Pornohvězda12Mlask... než přijde někdo s nickem "'or 1=1; Drop table user;" - to je jen priklad a nefunkcni a nerelevantni k Tve WWW, kazdopadne musis tam dat nejakou escape sekvenci (tzn odstraneni specialnich znaku) - driv nebo pozdeji ti nekdo rozhazi stranku az nacpe <,>.. < to nejakeho policka a email rozhazi.

Já mu to chtěl vysvětlit, ale než jsem to odeslal, tak jsi byl první. Bylo to skoro stejné jako to tvoje.
Ještě místo htmlspecialchars lze použít při práci s mysql funkci mysql_real_escape_string()
<p>$polozka[mail]</p> by mělo být v uvozovkách i to ostatní == <p>$polozka["mail"]</p>

bohužel nereaguje
a když dám rozeslat tak mi to napíš že bylo rozesláno ale u to je taky nasáno

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 30

a
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 32

už vážně nevím... opravovat chyby ve scriptu ani moc nepotřebuji... je plně funkční akorát nemám potuchy jakým způosbem dostat obash toho sloupce v databázi do adresy pro odeslání nejspíše cyklem ale while nefunguje

Notice: Undefined index: mail in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 35

Notice: Use of undefined constant predmet - assumed 'predmet' in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 37

Notice: Use of undefined constant novinka - assumed 'novinka' in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 38

Notice: Undefined variable: link in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 29

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 29

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 31
No database selected

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/s/smycmaweb/novinky/odesilani.php on line 34

a tohle to píše když použju váš script

Ad Tvůj script : jak už Ti tady napsali v předchozích odpovědích, proměnnou $address je nutno plnit cyklem. Příkaz

$address="$dotaz";
je opravdu nesmyslný.

Ad oprava dan55 :

nejdřív je nutno vyřešit chybové hlášení o nedefinovaném linku :
polož

$link=mysql_connect($dbhost,$dbusr,$dbpassw);

Ještě radši oprav :

while($polozka=mysql_fetch_array($dotaz))
na
while($polozka=mysql_fetch_array($dotaz,MYSQL_BOTH ))
nejsem si jist, zda se bez tohoto doplnění $polozka["mail"] naplní.

Skript zkus a napiš další případné potíže.

Tak mi to nedalo, a script jsem vyzkoušel
Struktura DB: email (varchar 100 cp1250) a id (int8,autoIncrement,unique)
Tento kód, a vše OK!

<?php
if (isset($_POST["ok"])){
error_reporting(E_ALL);
$dbhost="*****";
$dbusr="*****";
$dbpassw="*****";
$dbname="*****";
mysql_connect($dbhost,$dbusr,$dbpassw);
mysql_select_db($dbname);
$dotaz=mysql_query("SELECT mail FROM novinky");
$pocet=mysql_num_rows($dotaz);
echo "<p class='nadpis'>Databáze obsahuje celkem: ".$pocet." záznamů.</p>";
while($polozka=mysql_fetch_array($dotaz)){ 
$predmet=htmlspecialchars($_REQUEST["predmet"]);
$zprava=htmlspecialchars($_REQUEST["novinka"]);
$subject="Novinky z Smycmaweb";
$message="
<style type='text/css'>
.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 class='text'>Novinky z Smycmaweb</p>
<table>
<tr>
<td width='120'><p class='text'>Co nového:</p></td>
<td><p class='text_c'>".$predmet."</p></td>
</tr>
<tr>
<td width='120'><p class='text'>Zpráva:</p></td>
<td><p class='text_c'>".$novinka."</p></td>
</tr>
</table>";
$headers="MIME-Version: 1.0\n";
$headers.="Content-type: text/html; charset=windows-1250\n";
$headers.="From: Smycmaweb\n";
if(mail($polozka["mail"],$subject,$message,$headers)){
  echo"<p>Na email <i>".$polozka['mail']." </i> byly odeslány informace o novinkách</p>";
}
}
echo "<p class='nadpis'>Novinky rozeslány</p>";
}

?>
<form method="post">
<input name="predmet" value="Testovací">
<br>
<input name="novinka" value="Novinka">
<input type="submit" value="ok" name="ok">
</form>

Zpět do poradny Odpovědět na původní otázku Nahoru

loading...