Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Halan batista

Envio de email com limitador

Recommended Posts

Ola.

 

Gostaria de help ou um codigo parecido com o que eu quero.

 

Seguinte.. Meu servidor tem limitacao de envio de 300 emails por dia.

 

Queria fazer o seguinte. Pegar o valor total de emails dividir eles de 300 em 300 e criar um menu <option> com 0 - 300, 300 - 600, 600 - 900 e assim por diante.

Porque dai em 1 dia eu seleciono 0-300, no outro 300-600.

 

Deu para compreender?

 

Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente, é o que você disse. Dividir o total em partes de 300 e percorrer a lista (array ou banco de dados) a partir de um certo registro

 

Explique em qual parte está com dificuldade

 

 

Você pode fazer o script executar-se automaticamente, colocando-o no crontab de seu server. Assim não prcisa do <select> para selecionar o intervalo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria uma flag enviado. Percorre os e-mails por enviar (onde flag_enviado = false) e os envia. Quando envia, flag_enviado = true. Limite em 300.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A nosso intenção é auxiliar, não passar códigos prontos.

 

Diga em qual parte tem dúvida. O importante é tentar fazer. Só assim saberá onde tem dúvida

 

Se passarmos um código pronto, voce nao vai aprender

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok.

 

Como faço para separar em partes então e percorrer depois.. Porque eu to sem ideia de como faço pra separar de 300 em 300 emails!

A minha intenção é que criasse um menu com 1 2 3 4 5 6.. e assim por diante de acordo com a quantidade de registros, onde 1 seria de 0 - 300 emails, 2 seria 300 a 600 emails, 3 seria de 600 a 900 emails e assim por diante..

Mas eu to sem ideia de como fazer isso, não sou programador profissional!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os e-mails estão gravados no banco de dados? Qual? Se não, estão aonde? Como você faz para ter acesso a eles? Se fosse para enviar para todos de uma vez, como você faria, ou seja, qual código utilizaria?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meus registros estão na base dados...

 

Desenvolvi um código aqui.. Vamos trabalhar encima dele..

Ele está limitando em 300 registros listados e fazendo paginacao, só que a paginacao não está funcionando, ele está listando os 300 primeiros registros, quando clico na página 2 ele continua com os mesmos 300 registros... Segue o código abaixo:

        <?php
        $sql = mysql_query("SELECT * FROM n_emails WHERE ativo = 's'");
	$qtd_pag = 300;                          //quantidade de registros por pagina
        $total_reg = mysql_num_rows($sql);
	
        $paginas = ceil($total_reg / $qtd_pag);
	if(!isset($pagina)) { $pagina = 0; }
	$inicio = $pagina * $qtd_pag;

	$sql = mysql_query("SELECT * FROM n_emails order by id LIMIT $inicio, $qtd_pag");
	$total = mysql_num_rows($sql);
	
	while($lista = mysql_fetch_array($sql)){
        $email = $lista["email"];
        ?>

        <option value="<?=$email?>"><?=$email?></option>
        <?php } ?>
        </select>


	 <?  if ($pagina > 0) {
     $menos = $pagina - 1;
     $url = "$PHP_SELF?pagina=$menos";
     print "<a href=\"$url\">« Anterior</a>";
     } else {
     print "« Anterior";
     }

     for($i = 0; $i < $paginas; $i++) {
     $linksp = $i + 1;
     if ($pagina == $i) {
             print " | <b>$linksp</b>";
     } else {
             $url = "$PHP_SELF?pagina=$i";
             print " | <a href=\"$url\">$linksp</a>";
         }
     }

      if($pagina < ($paginas - 1)) {
      $mais = $pagina + 1;
      $url = "$PHP_SELF?pagina=$mais";
      print " | <a href=\"$url\">Próxima »</a>";
      } else {
      print " | Próxima »";
      } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você com certeza não leu o link que eu poste....

 

Com register global em ON, por exemplo

pagina.com.br/pg=1

Você acessa como

echo $pg;
Com register global em OFF, tem que ser

echo $_GET['pg'];
A página atual....

// ON
echo $PHP_SELF;
// OFF
echo $_SERVER['PHP_SELF'];

Compreendeu?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você diz que não está vindo, você quer dizer que não vem nada ou que não vem os outros 300? Se não vem os outros 300, o que vem então? Como está o seu código no momento? Habilite todas as mensagens de erro, inclusive NOTICE.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele está listando apenas os 300 primeiros registros, quando eu clico no 2 para ir para proxima pagina, nao me retorna os proximos 300 registros, mas sim os mesmos 300 que já foram listados na primeira pagina!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim!! Deixa eu fazer as alterações aqui..

 

Obrigado

 

Obrigado resolveu o problema, ele está paginando... Só que tem um problema ainda...

Por exemplo ele lista << Anterior 1 | 2 | 3 Proximo >>

 

Ele comeca no 1, quando eu clico no 2 era para vir os proximos 300 registros correto?

 

Mas não está acontecendo isso, o que pode ser?

 

<select size="1" name="msg_para" style="background-color: #C0C0C0; font-family: arial; font-size: 8 pt; border: 1 solid #000000">
        <option value="todos"><<Todos>></option>
        <?php
    $sql = mysql_query("SELECT * FROM n_emails WHERE ativo = 's' order by id");
	$qtd_pag = 300;
    $total_reg = mysql_num_rows($sql);
	$paginas = ceil($total_reg / $qtd_pag);
	if(!isset($pagina)) { $pagina = 0; }
	$inicio = $pagina * $qtd_pag;
	$sql = mysql_query("SELECT * FROM n_emails order by id LIMIT $inicio, $qtd_pag");
	$total = mysql_num_rows($sql);
	while($lista = mysql_fetch_array($sql)){
    $email = $lista["email"];
    ?>
        <option value="<?=$email?>"><?=$email?></option>
        <?php } ?>
    </select>
  <br>
	  	          <?
     $pagina = $_GET['pagina'];
     if ($pagina > 0) {
     $menos = $pagina - 1;
	 $pagg = $_SERVER['PHP_SELF'];
     $url = "$pagg?pagina=$menos";
     print "<a href=\"$url\">« Anterior</a>";
} else {
     print "« Anterior";
}

for($i = 0; $i < $paginas; $i++) {
     $linksp = $i + 1;
     if ($pagina == $i) {
             print " | <b>$linksp</b>";
     } else {
             $url = "$pagg?pagina=$i";
             print " | <a href=\"$url\">$linksp</a>";
     }
}

if($pagina < ($paginas - 1)) {
     $mais = $pagina + 1;
     $url = "$pagg?pagina=$mais";
     print " | <a href=\"$url\">Próxima »</a>";
} else {
     print " | Próxima »";
} ?>

Acho que o erro está na paginação porque ai no código que to vendo, onde que está o comando que solicita que sejam mostrados os proximos 300 registros?

Ou estou pensando errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o erro.. Nossa coisa muito simples, como você comento sobre o campo $pagina, foi so eu por o $_GET["pagina"] no comeco do codigo e pronto.

 

Agora minha ultima duvida, cliquei na pagina 2 foi para os proximos 300 contatos. Como faço para que eses 300 emails da pagina 2 sejam enviados? Eu ja tenho o form de envio e tudo. So que ele está enviando para todos os emails sem LIMIT, como faco para que envie apenas para aqueles 300 emails da pagina 2.

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.