Foros del Web » Programando para Internet » PHP »

Envío de emails filtrando emails repetidos

Estas en el tema de Envío de emails filtrando emails repetidos en el foro de PHP en Foros del Web. Hola, a ver si me podeis echar una mano, estoy haciendo un script sencillo para enviar emails a los clientes de una tienda que han ...
  #1 (permalink)  
Antiguo 13/04/2012, 04:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 1
Envío de emails filtrando emails repetidos

Hola, a ver si me podeis echar una mano, estoy haciendo un script sencillo para enviar emails a los clientes de una tienda que han olvidado hacer su pedido, para ello saco de la base de datos la relación de clientes, su nombre, email, productos en la compra, etc..

Los datos obtenidos son de este estilo:

Producto | email

Luego en PHP la cosa sería la típica, conexión base de datos, obtener datos y recorrer el array con bucle y enviar email, pero si un cliente tenía varios productos en su cesta tengo lo siguiente:

Producto 1 | [email protected]
Producto 2 | [email protected]
Producto 3 | [email protected]
Producto 4 | [email protected]


Alguna idea para procesar el envío de emails sin que mande un email cada vez que el bucle de una vuelta?
  #2 (permalink)  
Antiguo 13/04/2012, 04:27
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 4 meses
Puntos: 66
Respuesta: Envío de emails filtrando emails repetidos

Mira de hacer la consulta del tipo "select DISTINCTROW email, etc"

saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 13/04/2012, 04:34
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 4 meses
Puntos: 66
Respuesta: Envío de emails filtrando emails repetidos

+ info:

Omite datos que se basan en registros completamente duplicados, no sólo en campos duplicados. Por ejemplo, puede crear una consulta que combine las tablas Clientes y Pedidos en el campo IdCliente. La tabla Clientes no contiene campos IdCliente duplicados, pero la tabla Pedidos sí, porque cada cliente puede tener muchos pedidos. La siguiente instrucción SQL muestra cómo puede utilizar DISTINCTROW para crear una lista de compañías que han realizado al menos un pedido pero sin los detalles acerca de dichos pedidos:

SELECT DISTINCTROW NombreCompañía
FROM Clientes INNER JOIN Pedidos
ON Clientes.IDCliente = Pedidos.IdCliente
ORDER BY NombreCompañía;

Si omite DISTINCTROW, esta consulta produce varias filas para cada compañía que tenga más de un pedido.

DISTINCTROW tiene efecto sólo cuando se seleccionan campos de algunas pero no de todas las tablas utilizadas en la consulta. DISTINCTROW se omite si la consulta incluye sólo una tabla o si incluye en los resultados campos de todas las tablas.
__________________
Tu álbum de cromos online!!
  #4 (permalink)  
Antiguo 13/04/2012, 04:36
 
Fecha de Ingreso: febrero-2009
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Envío de emails filtrando emails repetidos

Cita:
Iniciado por santris Ver Mensaje
Mira de hacer la consulta del tipo "select DISTINCTROW email, etc"

saludos,
Hola, no quiero que los emails no se repitan en la consulta, ya que un mismo email tiene asociado diferentes productos que si quiero conocer ya que el email enviado constaría de una lista de todos esos productos.
  #5 (permalink)  
Antiguo 13/04/2012, 04:42
 
Fecha de Ingreso: septiembre-2010
Ubicación: /home/
Mensajes: 103
Antigüedad: 14 años, 3 meses
Puntos: 17
Respuesta: Envío de emails filtrando emails repetidos

Hola rodobook,

podrías ordenar tu query por email y producto, entonces, dentro del bucle guardas el email en una variable/array y lo mismo con el producto, si el siguiente email es igual, añades producto, sino es igual, mandas correo, reseteas las variables, asignas el nuevo email y así hasta al fin!


Saludos
  #6 (permalink)  
Antiguo 13/04/2012, 04:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 9
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Envío de emails filtrando emails repetidos

Cita:
Iniciado por Bugger Ver Mensaje
Hola rodobook,

podrías ordenar tu query por email y producto, entonces, dentro del bucle guardas el email en una variable/array y lo mismo con el producto, si el siguiente email es igual, añades producto sino es igual, mandas correo, reseteas las variables y al siguiente....


Saludos
Cierto, gracias!
  #7 (permalink)  
Antiguo 13/04/2012, 04:49
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años, 1 mes
Puntos: 67
Respuesta: Envío de emails filtrando emails repetidos

Prueba en php a hacer algo de este estilo:
Código PHP:

$mail 
'';
while(
$row mysql_fetch_assoc($consulta)){
  if(
$mail == $row['email']){
     
$productos[$i] = $row['producto'];
     
$i++;
  }else{
     
//Aqui mete el tratamiento de datos
     
$mail $row['mail'];
     
$productos = new array();
     
$i 0;
  }

Luego tu utilizas el array como quieras. Eso puede funcionarte pero te aconsejo que mires lo que te dice santris para no olvidarte en las consultas de deshacer el producto cartesiano.
Y puede que debas pensar en reestructurar la db o algo, no soy quien para decirte nada ya que ni siquiera sé que uso le das pero no conviene complicarse tanto para hacer cosas que podrían ser sencillas.

Saludos!

Etiquetas: emails, repetidos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:20.