Jump to content


Photo

Enviar Varias Noticias No Email Do Usuario Cadastrado...


  • Faça o login para participar
4 replies to this topic

#1 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 16/12/2009, 11:43

Olá...

Estou com um probleminha...

Tenho que enviar por email, através do phpmailer noticias com a data de hoje por exemplo, isso será feito automaticamente todo o dia depois das 10 horas da manha...

Até ai blza...

Só que esta acontecendo um problema estranho... só esta enviando a ultima noticia cadastrada na data X, se tiver 10 ou 15, só a ultima cadastrada com data daquele dia é enviada...

Estou utilizando while para pegar os dados do BD, se faço um "echo" para imprimir na tela, aparece todas as noticias do dia blza, mas no email só vai a ultima.

Vejam como está dentro do WHILE:


$noticias_de_hoje = "<b>".$dados[DATA]." - ".$nome_categoria." - ".$dados[hora]." hrs<br></b>".$dados[titulo]."<br><br>";
echo "$news_de_hoje";

No echo "$news_de_hoje"; aparece blza...

Se coloco fora do WHILE só aparece uma, e como o código do envio do email esta fora do WHILE ai que esta o problema.

Não posso colocar dentro do WHILE senão vai mandar um email para cada noticia, tem que mandar um email com todas juntas...

Tem como me dizer se tenho que usar algo tipo o foreach ou coisa assim pra juntar todas essas noticias???

Bem amigos... seria issom tomaras que alguem possa me ajudar.

Abração a todos.

Att.

Douglas

#2 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 16/12/2009, 12:07

Tem como me dizer se tenho que usar algo tipo o foreach ou coisa assim pra juntar todas essas noticias???

Sem dúvida você precisará fazer um loop em todas as notícias do dia.

Exemplo:

$msg = "";
foreach ($noticias as $dados) {
     $news_de_hoje .= "<b>".$dados[DATA]." - ".$nome_categoria." - ".$dados[hora]." hrs<br></b>".$dados[titulo]."<br><br>";
}

Você também pode fazer um while puxando as notícias direto do banco de dados e ir jogando na variável $news_de_hoje.

Mas acho que você já entendeu como funciona... o loop deve ser feito apenas na variável $news_de_hoje, não no código todo. ;)
att,
Muller Dias
ex-administrador Fórum WMO

#3 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 16/12/2009, 13:45

Olá sem.Ponto!

Olha, não consigo fazer funcionar... :(

Vou colar o código e ver se assim poderá me dizer aonde devo colocar o foreach, pois tentei fazer como falou, mas só recebi no email a palavra "Array".

Veja o código como estou usando:

<?php
$SQL = "SELECT * FROM $tabela_noticias WHERE DATA='".date("d/m/Y")."' ORDER BY id DESC";

$query = mysql_query($SQL);
if (mysql_num_rows($query) == "") { echo "<br><br>&nbsp;Nenhuma notícia para ser enviada!<br><br>"; }
while ($dados = mysql_fetch_array($query)) {

$news_de_hoje= "<b>".$dados[DATA]." - ".$nome_categoria." - ".$dados[hora]." hrs<br></b>".$dados[titulo]."<br><br>";

}
$sql = mysql_query("SELECT * FROM $tabela_newsletter");
$erro = "";
while($valor = mysql_fetch_array($sql)){
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->PluginDir = $path_sist;
$mail->SetLanguage("br", $path_sist);
$mail->Host     = $smtp_host; 
$mail->SMTPAuth = true;
$mail->Username = $smtp_user;
$mail->Password = $smtp_pass;
$mail->From     = $email_admin;
$mail->FromName = $nome_admin;
$mail->AddAddress($valor[email], "");
$mailWordWrap = 50;
$mail->IsHTML(true);
$mail->Subject  =  "Notícias de Hoje";
$mail->Body     =  "$news_de_hoje";
$mail->AltBody  =  "";

if(!$mail->Send())
{
   echo "ATENÇÃO:<br><br><br>Erro - As notícias não puderam ser enviadas!<br><br>";
   echo "Erro: " . $mail->ErrorInfo;
   return false;
}
}
echo "As notícias foram enviadas com sucesso!";
}
?>

Se puder me auxiliar, agradeço a ajuda...

Abração!

Att.

Douglas

#4 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 16/12/2009, 21:19

Não tem necessidade de usar foreach, você está recebendo os dados direto do banco de dados e fazendo um loop aí com while.

Veja isso:

$news_de_hoje = "<b>".$dados[DATA]." - ".$nome_categoria." - ".$dados[hora]." hrs<br></b>".$dados[titulo]."<br><br>";

O problema é o operador que você está usando, que é o "=". A cada loop, a linha é substituída por outra, não é isso que você quer, né? :D

Veja esse exemplo básico:

$a = "Bom ";
$a = "dia!";

echo $a;

No exemplo acima, vai imprimir apenas "dia!", porque eu atribuí esse valor sobreescrevendo o outro valor na variável $a. É exatamente isso que está ocorrendo com você...

Você teria que colocar os valores sem sobreescrever. Exemplo:

$a = "Bom ";
$a .= "dia!"

echo $a;

Agora sim vai imprimir "Bom dia!". ^_^

".=" é o operador que você deve usar. ;)

(ok2)
  • douglas.ck likes this
att,
Muller Dias
ex-administrador Fórum WMO

#5 douglas.ck

douglas.ck

    Ativo

  • Usuários
  • 390 posts
  • Sexo:Masculino

Posted 17/12/2009, 09:58

Olá sem.Ponto!!!!

Agora sim funcionou :), meu que bom que me ajudou, não conseguia de jeito maneira fazer isso dar certo...

Achava estranho que nos testes, quando dava um "echo" na pagina aparecia normal, mas no email não ia... agora vai tudo certinho.

Agradeço muito sua atenção comigo, foi muito legal...

Ainda bem que existe você(s) para ajudar a quem precisa...

Um abração pra ti e um muito obrigado novamente...!!!!!!

Tomarás que isso ajude a outros também...

Att.

Douglas




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq