Autor Zpráva
bredis
Profil

Moderátor Alphard: Vlákno je do Prací a zakázek přesunuto dodatečně, požadavky a kontakt naleznete v [#7] bredis


Zdravím,

níže je uveden kód, který má odeslat email uživatelům v databázi. Problém je, že odešle mail pouze poslednímu reg. uživateli a ostatním ne. Včem dělám chybu?

<?
$dbconn = mysql_connect('xxx', 'xxx', 'xxx') or die("Unable to connect to MySQL");

  mysql_select_db("mojeDB",$dbconn);
  
  $mail  = mysql_fetch_array (mysql_query ('SELECT s_contact_email
          FROM `oc_t_item`
          WHERE pk_i_id
                IN (SELECT fk_i_item_id
                FROM `oc_t_item_custom_attr_values`
                WHERE s_value = CURRENT_DATE( )
          )
          ORDER BY pk_i_id ASC'));          

          
  $description = mysql_fetch_array (mysql_query ('SELECT s_description
          FROM `oc_t_item_description`
          WHERE fk_i_item_id
                IN (SELECT fk_i_item_id
                FROM `oc_t_item_custom_attr_values`
                WHERE s_value = CURRENT_DATE( )
         )
         ORDER BY `fk_i_item_id` ASC'));
     
  //Check if entry exists
  if($entry !== 0){
    $message = $description['s_description'];
    $to = $mail['s_contact_email'];
    $from = "admin@neco.cz";
    $subject = "test";
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=windows-1250-l\r\n";
    $headers .= "From: $from\r\n";
    
    
    if(mail($to, $subject, $message, $headers)){
      echo 'Email sent';
    }else{
      echo 'Failed sending email';
    }
  }else{
    echo 'No email entry found';
  }                    
  mysql_close($dbconn);
  ?> 
Alphard
Profil
Tipoval bych spíš prvního uživatele, řadíte podle id asc. Řešením je projít výsledek cyklem a odeslat. Nicméně běžný hosting vám zřejmě nepovolí posílat moc mailů najednou.
bredis
Profil
Alphard:
jj máte pravdu...prvnímu uživateli. Já tam pak přidal to řazení a zapoměl jsem na to:) Můžete mě prosím nasměrovat, jak to vyřešit s tím cyklem? Jak to řeší např. diskusní fóra když odesílají mail více uživatelů.
Jde mi o to, že budu mít databázi do které se uživatel zaregistruje, vyplní nějaké údaje a pak zadá datum. A v ten datum by se mu měl odeslat mail s jeho daty které zadal.
aDAm
Profil
Např to posílají přes SMTP server či služby k tomu určené. Pokud to odpálite na sdíleném hostingu a zahltíte frontu tak dojde ve většině případů k blokaci.
peta
Profil
Cyklus
http://cz1.php.net/manual/en/control-structures.for.php
http://cz1.php.net/manual/en/control-structures.foreach.php
http://cz1.php.net/manual/en/control-structures.while.php

Mysql_fetch_array ti vytahle jeden radek, takze musis pouzit pro dalsi radek znovu mysql_fetch_array, viz
http://cz2.php.net/function.mysql_fetch_array
* Example #2 mysql_fetch_array()
bredis
Profil
Ok...díky všem. Zkusím se tím prokousat.
bredis
Profil
Jelikož jsem lama, tak jsem to dohromady nedal. Prosím moderátora o přesunutí do sekce "Práce a zakázky".

Kontakt: admin (zav.) dogslife.cz
Uveďte prosím za kolik jste schopni ten script zprovoznit s odesíláním přes SMTP server.

Děkuji
bredis
aDAm
Profil
Nevzdávej to tak rychle, existuje pěkná knihovna: http://sourceforge.net/projects/phpmailer/ která je opravdu jednoduchá na implementaci. Stačí nastavit SMTP server, login a heslo a pak sestavit zprávu a poslat.
Alphard
Profil
bredis [#7]:
Stále žádost o přesunu do Prací a zakázet platí? Já jsem toto vlákno nestíhal sledovat, omlouvám se.

Ovšem jestli jde o úpravu prvního kódu, je to docela snadné.
Klasickým způsobem budete procházet výstup z databáze a v těle cyklu odešlete mail

$dataSet = mysql_query('... sql dotaz ...');
while ($line = mysql_fetch_assoc($dataSet))
{
  mail($line['mail'], $subject, $message, $headers);
}

V základu takto, posíláním slepých kopii si na hostingové limity moc nepomůžete, takže kdybyste potřeboval posílat častěji, musíte si najít službu, která vám to umožní.
bredis
Profil
Dobrý den. Ano žádost o přesun stále platí jen s tím, že bych to potřeboval odesílat přes phpmailer.
bredis
Profil
Prosím o zamknutí....zakázka je zadaná. Děkuji

Vaše odpověď

Mohlo by se hodit

Podělte se prosím o své zkušenosti s touto kategorií Věnujte pozornost pravidlům. Zejména:
• Máte-li zájem o tuto nabídku/poptávku, využijte uvedený kontakt, nepište do diskuse.
• Držte se tématu.
  • Nepoučujte.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: