Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Almacenar varios valores en una sola variable

Estas en el tema de Almacenar varios valores en una sola variable en el foro de PHP en Foros del Web. Hola amigos. Tengo que mandar un email masivo en una web y no se como resolver el tema de mandar a varios destinatarios a la ...
  #1 (permalink)  
Antiguo 29/04/2014, 01:50
Avatar de Filgood  
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 16 años, 1 mes
Puntos: 1
Almacenar varios valores en una sola variable

Hola amigos. Tengo que mandar un email masivo en una web y no se como resolver el tema de mandar a varios destinatarios a la vez.
Tengo en un tabla los email de los suscriptores. Pero no se como recuperarlos para que me los imprima en esta línea:

//direcciones que recibirán copia oculta
$headers .= "Bcc: [email protected],[email protected]\r\n";


¿ como hago para recoger los email de la db y que me los imprima en esta línea de la función ?


//direcciones que recibirán copia oculta
$headers .= "Bcc: $direcciones\r\n";

¿ se pueden recoger los email de la db y guardalos en una sola variable para imprimir sobre esa línea de código ?

Muchas gracias
  #2 (permalink)  
Antiguo 29/04/2014, 02:54
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Almacenar varios valores en una sola variable

Puedes sacar todos los emails para poder ser enviados, por ejemplo:

Código PHP:
Ver original
  1. $consulta = mysql_query('SELECT * FROM usuarios');
  2.  
  3. while($rs = mysql_fetch_assoc($consulta)) {
  4.    
  5. $emails = array($rs['email']);
  6.    
  7. foreach($emails as $direcciones) {
  8.        
  9. echo $direcciones.',';
  10.        
  11. }
  12.    
  13. }

O también para reducirlo un poco podrias hacer:

Código PHP:
Ver original
  1. $consulta = mysql_query('SELECT * FROM usuarios');
  2.  
  3. while($rs = mysql_fetch_array($consulta)) {
  4.        
  5. $direcciones =  $rs['email'].',';
  6.  
  7. echo $direcciones;
  8.    
  9. }

Estos son algunos que te devería funcionar lo que pides, pero hay muchas mas opciones.

Espero que te sirva, un saludo.
  #3 (permalink)  
Antiguo 29/04/2014, 06:39
Avatar de Filgood  
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Almacenar varios valores en una sola variable

Hola Manu, muchas gracias. Los ejemplos están muy bien. ¿ como saco la variable del bucle con todos los elemento que ha recogido en el bucle ?

Si imprimo $direcciones dentro del bucle , imprime bien todos los email. Pero si sacas la variable del bucle solo imprime el ultimo registro email

1.$consulta = mysql_query('SELECT * FROM usuarios');

2.

while($rs = mysql_fetch_array($consulta)) {



$direcciones = $rs['email'].',';



echo $direcciones;// dentro del bucle perfecto



}

$echo $direcciones; // como es lógico solo saca un registro

Última edición por Filgood; 29/04/2014 a las 07:26 Razón: Otra pregunta
  #4 (permalink)  
Antiguo 29/04/2014, 07:42
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: Almacenar varios valores en una sola variable

Claro por eso hay que hacer el bucle para que te de todos los emails almacenados, si lo sacas a fuera te dará el último email del registro.

Para utilizar la variable utiliza por ejemplo para que lo entiendas:

Código PHP:
Ver original
  1. $consulta = mysql_query('SELECT * FROM usuarios');
  2.  
  3. while($rs = mysql_fetch_array($consulta)) {
  4.  
  5. $direcciones = $rs['email'].',';
  6.  
  7. $resultado = $direcciones;
  8.  
  9. // La variable $resultado puedes ponerla donde quieras que aparezca los emails
  10.  
  11. }

De esa manera creo que te soluciona lo que pides y por favor utiliza HIGHLIGHT para que los códigos que introduzcas sean mas buenos para la vista ;P

Saludos.
  #5 (permalink)  
Antiguo 29/04/2014, 08:53
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Almacenar varios valores en una sola variable

Cita:
Iniciado por MaNuX0218 Ver Mensaje
Puedes sacar todos los emails para poder ser enviados, por ejemplo:

Código PHP:
Ver original
  1. $consulta = mysql_query('SELECT * FROM usuarios');
  2.  
  3. while($rs = mysql_fetch_assoc($consulta)) {
  4.    
  5. $emails = array($rs['email']);
  6.    
  7. foreach($emails as $direcciones) {
  8.        
  9. echo $direcciones.',';
  10.        
  11. }
  12.    
  13. }

O también para reducirlo un poco podrias hacer:

Código PHP:
Ver original
  1. $consulta = mysql_query('SELECT * FROM usuarios');
  2.  
  3. while($rs = mysql_fetch_array($consulta)) {
  4.        
  5. $direcciones =  $rs['email'].',';
  6.  
  7. echo $direcciones;
  8.    
  9. }

Estos son algunos que te devería funcionar lo que pides, pero hay muchas mas opciones.

Espero que te sirva, un saludo.
Como "nota" para reducirlo, puedes hacer dos cosas:

1)
Código PHP:
$consulta mysql_query('SELECT GROUP_CONCAT(Email) as Emails FROM usuarios');
$rs mysql_fetch_array($consulta);
echo 
$rs['Emails']; //[email protected],[email protected] etc! 
Con group_concat el propio SQL ya te lo "agrupa" todo en una variable, separado por comas por defecto, más info: https://dev.mysql.com/doc/refman/5.0...functions.html


2)
O bien, algo más "tirando de php"
Código PHP:
$consulta mysql_query('SELECT * FROM usuarios');

while(
$rs mysql_fetch_array($consulta)) {
$direcciones[] =  $rs['email']; //Así lo vas almacenando en el array $direcciones
}

echo 
implode(','$direcciones); //Te imprime los valores del array separados por una , 
Soluciones hay varias... xD
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 29/04/2014, 11:14
Avatar de Filgood  
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Almacenar varios valores en una sola variable

Muchas gracias a los dos. Sois geniales¡¡¡¡ Saludos

Etiquetas: almacenar, tabla, variable
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 19:20.