Foros del Web » Programando para Internet » PHP »

PHPMAILER enviar correo con esta consulta y agrupación de los datos

Estas en el tema de PHPMAILER enviar correo con esta consulta y agrupación de los datos en el foro de PHP en Foros del Web. L LANG="es"> </head> <body> <?php include("conexion.php"); require 'PHPMailer/PHPMailerAutoload.php'; require("PHPMailer/class.phpmailer.php"); require("PHPMailer/class.smtp.php"); $conexion=Conectarse(); $u=mysql_query("select *from usuarios left join empresas on usuarios.empresa_fq=empresas.id where date(inicio) between '$fecha2' and '$fecha'",$conexion) ...
  #1 (permalink)  
Antiguo 31/03/2016, 16:24
Avatar de jmoreno07  
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 8 años
Puntos: 0
Sonrisa PHPMAILER enviar correo con esta consulta y agrupación de los datos

L LANG="es">
</head>
<body>
<?php
include("conexion.php");
require 'PHPMailer/PHPMailerAutoload.php';
require("PHPMailer/class.phpmailer.php");
require("PHPMailer/class.smtp.php");
$conexion=Conectarse();

$u=mysql_query("select *from usuarios
left join empresas on usuarios.empresa_fq=empresas.id
where date(inicio) between '$fecha2' and '$fecha'",$conexion) or die ("Error al seleccionar los ".mysql_error());




while($uu = mysql_fetch_assoc($u)) {

//ARRAY GLOBAL PARA SELECCIONAR TODOS LOS DATOS DE LA TABLA USUARIOS Y EL CORREO DE NUESTRA CONSULTA
$datos[] = array('email' => $uu['email'], 'nombre' => $uu['nombre'],'cedula' =>$uu['cedula'],'nivel_fq'=>$uu['nivel_fq'],'inicio'=>$uu['inicio']);
}
$grupo = array();
$directorios = array();
foreach($datos as $valor => $valor_){

//CONSEGUIR EL VALOR ACTUAL
$directorio_ = ucwords(strtolower($valor_['email']));

//VERIFICAR SI EL VALOR SE REPITE
if(!in_array($directorio_, $directorios)){
//SI NO EXISTE LO AGREGA AL NUEVO ARRAY
$directorios[] = $directorio_;
}
//JALO EL VALOR ACTUAL
$directorio_u = array_search($directorio_, $directorios);

//AGREGO EL NUEVO REGISTRO AL CONTENEDOR DEL VALOR CORRESPONDIENTE
$grupo[$directorio_u][] = $valor_;
}

$directorio_ = array();
foreach($grupo as $uno){
foreach($uno as $dos){
$archivo_[] = "<table border='1'><tr><th>Nombre</th><th> Cedula </th><th> Nivel </th><th>Fecha</th></tr><tbody><td>".$dos['nombre']."</td><td>".$dos['cedula']."</td><td>".$dos['nivel_fq']."</td><td>".$dos['inicio']."</td></tbody></table><br>";
}
$directorio_[] = array_filter(array(
'directorio' => $uno[0]['email'],
'archivo' => array_filter($archivo_)
)
);
unset($archivo_);
}
?>
<ul>
<?php foreach($directorio_ as $archivos){

?>
<li>
<span><?php echo $archivos['directorio']; ?></span>
<?php if($archivos['archivo']){ ?>

<?php foreach($archivos['archivo'] as $archivos_){ ?>
<?php echo $archivos_; ?>
<?php } ?>

<?php } ?>
</li>
<?php } ?>


</ul>


<?php



mysql_close($conexion);

?>
</body>
</html>

Envío masivo teniendo una consulta en mysql
1.Imprimo el correo de cada usuario en el primer echo
2. Imprimo las personas que pertenecen a cada usuario en el segundo echo
3.Los datos de las personas ya están agrupados con cada correo de cada usuario .

Mi problema es cómo hago para organizar todo este código en la estructura de PHPMAILER??

Gracias espero me puedan ayudar
  #2 (permalink)  
Antiguo 31/03/2016, 18:23
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

puedes colocar el codigo de php mailer dentro del while para que este realice el envio del email por cada registro encontrado, o crear una funcion con el php mailer y llamarla con los parametros de esta desde el while, claro recuerda que hay hosting que penalizan por el envio masivo de emails, verifica eso primero o crea una pausa entre cada envio
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 01/04/2016, 07:35
Avatar de jmoreno07  
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 8 años
Puntos: 0
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

Muchas gracias por la respuesta , no puedo colocarlo dentro del while

Ya que hago el foreach para que en la consulta no se me repita el correo que pertenecen a cada usuario , para que lo tome una solo vez y pueda enviarlo con el correo que corresponde , lo que quiero es que pueda recorrer cada correo y que se vaya enviando uno por uno con los datos que pertenecen a cada correo ..

Esto es lo que me imprime los echo
echo 1
***.****@******.com

echo 2
Nombre Cedula Nivel Fecha
Jeison Collazos Acosta 000 Reentrenamiento 2016-02-27

Nota: Igual para los otros registros son mas de 1000 registros que pertenecen a cada correo


**********@**.***.**

Nombre Cedula Nivel Fecha
Oscar David Zapata 666 Reentrenamiento 2016-02-27

*****@***.**.**
Nombre Cedula Nivel Fecha
paty 999 Avanzado 2016-03-01

Nombre Cedula Nivel Fecha
miguel 55 Avanzado 2016-03-08

Nombre Cedula Nivel Fecha
papa 88 Basico 2016-03-15

Ojala me puedas ayudar Gracias
  #4 (permalink)  
Antiguo 01/04/2016, 09:35
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

bueno creo que te dije y deje claro que debes incluirlo en el bucle si quieres que se envie el email a cada usuario rescatado de la bd o en el bucle genera una llamada a una función donde envias la info para el envio por cada registro, son solo esas dos opciones

Código PHP:
Ver original
  1. require("class.phpmailer.php");
  2.  
  3. while($row = $tabla->fetch_array()){
  4.  
  5. $mail = new PHPMailer();
  6.     $mail->From = "[email protected]";
  7.     $mail->FromName = "SOPORTE";
  8.     $mail->Subject = "NUEVO ASUNTO";
  9.     $mail->AddAddress($row['email'], $row['nombre']);//AQUI EL BUCLE ME VA A COLOCAR EL REGISTRO ENCONTRADO
  10.     $mail->IsHTML(true);
  11.  
  12. $mail->CharSet = 'UTF-8';
  13.     $mail->Body = $body;
  14.     $mail->Send();
  15.  
  16. }

funcion:
Código PHP:
Ver original
  1. function envia($X, $Y){
  2.  
  3. require("class.phpmailer.php");
  4.  
  5. $mail = new PHPMailer();
  6.     $mail->From = "[email protected]";
  7.     $mail->FromName = "SOPORTE";
  8.     $mail->Subject = "NUEVO ASUNTO";
  9.     $mail->AddAddress($X, $Y);//AQUI EL BUCLE ME VA A COLOCAR EL REGISTRO ENCONTRADO
  10.     $mail->IsHTML(true);
  11.  
  12. $mail->CharSet = 'UTF-8';
  13.     $mail->Body = $body;
  14.     $mail->Send();
  15.  
  16. }
  17.  
  18. while($row = $tabla->fetch_array()){
  19.  
  20. envia($row['email'],$row['nombre']);
  21.  
  22.  
  23. }

incluso hay un par de opciones que hay que colocarle al mailer para limpiar y dejar listo para el siguiente envio dentro del mismo bucle, pero en este momento no las recuerdo.
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 01/04/2016, 10:34
Avatar de jmoreno07  
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 8 años
Puntos: 0
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

Puedo colocar en la función el echo del primer foreach para ponerla

$mail->addAddress(función 1 );

Y en el segundo echo del segundo foreach hacer otra función esta seria el cuerpo del correo
$mail->Body = (función 2);



Los foreach los utilizo para no repetir el dato del correo ya que ese correo pertenece a muchos usuarios ,
necesito evitar que se me repitan por eso hago los foreach para agrupar los datos de los usuarios que son de cada correo me hago entender ..

Gracias por tu ayuda
  #6 (permalink)  
Antiguo 01/04/2016, 11:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

la verdad no, o algo asi, pues me dices que tienes grupos de usuarios y que cada grupo se identifica por un único email el cual es distinto por cada grupo???? o que??? en fin la verdad no, estare atento a ver si alguien mas atina
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 01/04/2016, 12:20
Avatar de jmoreno07  
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 8 años
Puntos: 0
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

Exacto cada grupo de usuarios tiene un email distinto en el cual el email seria el campo donde le voy a enviar la información obtenida de cada grupo de usuarios me hago entender

gracias por tu ayuda
  #8 (permalink)  
Antiguo 01/04/2016, 12:30
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

me hago entender ??
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 01/04/2016, 12:41
Avatar de jmoreno07  
Fecha de Ingreso: marzo-2016
Mensajes: 12
Antigüedad: 8 años
Puntos: 0
Respuesta: PHPMAILER enviar correo con esta consulta y agrupación de los datos

Exacto cada grupo de usuarios tiene un email distinto en el cual el email seria el campo donde le voy a enviar la información obtenida

con cada grupo de usuarios

Me entiendes ahora si ??
gracias por tu tiempo

Etiquetas: correo, fecha, html, mysql, phpmailer, registro, select, sql, tabla, usuarios
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 01:21.