![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
24/11/2004, 15:04
|
![Avatar de nicolaspar](http://static.forosdelweb.com/customavatars/avatar80283_16.gif) | | | Fecha de Ingreso: noviembre-2004 Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años, 2 meses Puntos: 34 | |
haces una consulta y con esta un while.
El tema esta en que si son muchos email no es conveniente hacerlo de una, por lo que te conviene paginarlos en paquetes de a 50 o 100.
Otro tema es que si se corta el script en el medio, y lo retomas no volver a enviarle el mail a quienes se les haya enviado.
La solucion que veo es crear una tabla de enviados (dos campos, usuario y envio, ambos int), donde vas guardando lo que ya enviaste, y al levantar los usuario joineas con esta para levantar los faltantes...te doy un ejemplo:
<?php
include("conexion.php");
$tanda = 50;
$codigo_envio = 1;
$sql = 'select u.codigo, u.nombre, u.email from usuarios u left join envio e on e.usuario = u.codigo and e.envio = '.$codigo_envio.' where e.usuario is null limit 0,'.$tanda;
$query = mysql_query($sql, $conexion);
$total = mysql_num_rows(mysql_query($sql,$conexion));
if($total>0){
while($rs=mysql_fetch_array($query)){
#Enviar email aca
mysql_query("insert into envio (usuario, envio) values ('".intval($rs["codigo"])."', '".$codigo_envio."')",$conexion);
}
}
?>
Si queres darle mas onda podes usar ob_end_flush(); al inicio de la pagina, y un flush() cada vez que pasa por el while, y antes de este un echo de a quien se a enviado el mail. Además deverías verificar que el mail al que vas a enviar cumpla al menos con la logica de una cuenta comun (para esto hay regular expresion en la web a patadas).
Espero te sirva al menos de base. |