Foros del Web » Programando para Internet » PHP »

sistema de boletines?

Estas en el tema de sistema de boletines? en el foro de PHP en Foros del Web. Hola amigos: les cuento ke estos realizando un sistema de boletines en flash y php, pero tengo un problema. tengo una lista de usuarios con ...
  #1 (permalink)  
Antiguo 09/10/2003, 12:16
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta sistema de boletines?

Hola amigos:

les cuento ke estos realizando un sistema de boletines en flash y php, pero tengo un problema.

tengo una lista de usuarios con su correo, pero no puedo hacer desde php que en la base de datos reconosca los email almacenados en la BD, ke reconosca desde el registro 1 hasta el ultimo ke este y ke luego se guarden en una variable con el siguiente formato por ejemplo:

$mail_usuarios: [email protected], [email protected], ......;

para asi lugo con la funcion mail enviarlos al destinatario de cada correo almacenados en la BD.

espero ke me entiendan y ke me ayuden

de antemano muchas gracias
__________________
Practicando se Aprede
:-) :-)
  #2 (permalink)  
Antiguo 09/10/2003, 12:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. ¿tu sabes ya como obtener los datos del e-mail de cada registro? ..

Si eso ya lo estás haciendo .. sólo tienes que concatenar tus $row['email'] que obtienes en cada pasada del bucle (while() supongo que usuaras) para obtener tu mysql_fech_array() ...

Código PHP:
// incializo el array ..
$array_mails_usuarios=array();

while (
$row=mysql_fetch_array($result)){
// meto los e-mails en un array ..
$array_mails_usuarios[]=$row['email'];
}

// y los concateno con el separador que se escoja (caracter)
$mails_usuarios=implode(",",$array_mails_usuarios);

// me deshago del array "temporal" usado ...
unset($array_mails_usuarios); 
Como veras ..dije "concatenar"... esto sería: (en el bucle while del ejemplo):

$mails_usuarios .= $row['email'].',';

pero tendría problemas con el último , (coma) que me quedaría ...habria que estár usando bucles for() o contar el total de registros (de e-mails) que arroja la consulta para hacer condicionales (IF) .. así que mejor .. un array y un implode() .. y listo.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 09/10/2003, 12:43
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
algo no me keda claro, con lo que recien me explicaste, se almacenan todos los mail que estan en mi BD, es decir reconoce el campo email y almacena en la variable desde el registro 1 hasta el ultimo registro de dicho campo, cierto?
__________________
Practicando se Aprede
:-) :-)
  #4 (permalink)  
Antiguo 09/10/2003, 13:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. (suponia que algo de BD conocias) .. El código que puse no está completo .. falta por supuesto hacer la consulta a la BD (y conectar .. seleccionar la BD... etc)


Código PHP:
mysql_connect("host","user","pass");
mysql_select_db("la base de datos");
$result=mysql_query("SELECT email FROM emails"); 
Y todo depende de la sentencia SQL! que uses (ese "select ...") así generas (obtendras) tus datos .. Eso no es "PHP" sino lenguaje estructurado de consultas "SQL" própio de Mysql en este caso ...

Repasa algún manual/tutorial de PHP+Mysql .. tienes muchos recomendados en las FAQ's de este foro (de las primeras FAQ's).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 09/10/2003, 13:15
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Muchas gracias
Pd: solo tenia una confucion a lo ke tu referias pero ya kede claro.
__________________
Practicando se Aprede
:-) :-)

Última edición por necu; 09/10/2003 a las 13:35
  #6 (permalink)  
Antiguo 09/10/2003, 17:02
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta cluster??

mira este es mi script

<?php

$host="localhost";
$usuario="lab";
$contraseña="xxxxxxxx";
$base_de_datos="lab";

$link = mysql_connect ($host, $usuario, $contraseña);
mysql_select_db($base_de_datos, $link);

$result = ("select email from suscripcion");
$resultado = mysql_db_query ($base_de_datos, $result, $link);

$nombre_necu = "La Web de Necu";
$necu_email = "[email protected]";

$from = $nombre_necu;
$subject = "[Boletin de la Web del Necu]";
$contenido="
El Mensaje se Envio el $dia a las $hora:\n\n
----------------------------------------------------------------------------\n
Estos son los boletines de $nombre_necu:\n
----------------------------------------------------------------------------\n
Asunto del Boletin: : $asunto.\n
----------------------------------------------------------------------------\n\n
$mensaje\n
----------------------------------------------------------------------------\n
";

while(list($email) = sql_fetch_row($result)) { // linea
mail($email, $Subject, $contenido, "From: $nombre_necu <$necu_email>\nReply-To: $necu_email\nX-Mailer: PHP/" . phpversion());
}

Header("Location: listo.php");


?>

pero me sale este error:

Fatal error: Call to undefined function: sql_fetch_row() in /home/virtual/site2/fst/home/igi7/public_html/varios/pruebas/boletines.php on line 30
__________________
Practicando se Aprede
:-) :-)

Última edición por necu; 09/10/2003 a las 22:02
  #7 (permalink)  
Antiguo 09/10/2003, 17:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Fijate bien .. ¿como se llaman las funciones de mysql? ...

mysql_nose_algoalomejor() ..

Sería:
mysql_fetch_row();

Y .. si ya seleccionas la BD con mysql_select_db .. no uses luego mysql_db_query() usa mysql_query() sólo:

Código PHP:
$result "select email from suscripcion"// Los parentesis sobran ...
$resultado mysql_query ($result$link) or die(mysql_error()); 
El mysql_error() te permitirá obtener los errores de Mysql si los hay.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 09/10/2003, 19:32
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
realise los cambio ahora no me muestra error pero no me envia el mal al destinatario, es decir a los mail que estan en el campo email de la base de datos.

tendre ke implemantar algo mas...
__________________
Practicando se Aprede
:-) :-)
  #9 (permalink)  
Antiguo 09/10/2003, 20:24
Avatar de guaton69  
Fecha de Ingreso: septiembre-2002
Ubicación: Santiago - Chile
Mensajes: 330
Antigüedad: 15 años, 3 meses
Puntos: 0
Soy novato en PHP, pero spusiste la funcion mail ()?? esa es la que envia los e-mail. aqui te dejo como funciona

http://cl2.php.net/manual/es/ref.mail.php

adios y salu2
  #10 (permalink)  
Antiguo 09/10/2003, 21:10
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Mi aporte

Complemento y detallo lo que te puso Cluster:

Escribo todo tu código con las correcciones que yo le haría:

Código PHP:
<?php

$host
="localhost";
$usuario="tu_usuario";
$contraseña="tu_contraseña";
$base_de_datos="tu_base";

$link mysql_connect ($host$usuario$contraseña) or die mysql_error();
mysql_select_db($base_de_datos$link) or die mysql_error();

$result = ("select email from suscripcion");
$resultado mysql_query ($result$link) or die mysql_error();//Primer cambio

$nombre_necu "La Web de Necu";
$necu_email "[email protected]";

$from $nombre_necu;
$subject "[Boletin de la Web del Necu]";
$contenido="
El Mensaje se Envio el $dia a las $hora:\n\n
----------------------------------------------------------------------------\n
Estos son los boletines de $nombre_necu:\n
----------------------------------------------------------------------------\n
Asunto del Boletin: : $asunto.\n
----------------------------------------------------------------------------\n\n
$mensaje\n
----------------------------------------------------------------------------\n
"
;

//Este paso no es necesario, pero si tus cabaceras son las mismas, puede ser más ordenado almacenarlas en una variable.
$headers="From: $nombre_necu <$necu_email>\nReply-To: $necu_email\nX-Mailer: PHP/".phpversion();

//Otro cambio: 
//Lo principal es que dentro del mysql_fetch_array() tienes que
//poner la variable $resultado y no la $result que estabas usando.
while($rowmysql_fetch_array($resultado) or die mysql_error()) {
//utilizando mysql_fetch_array en lugar de mysql_fetch_row
//puedes utilizar el array como asociativo así:
mail($row['email'], $Subject$contenido$headers);
}
Header("Location: listo.php");
?>
Yo no lo he probado, pero creo que así te funcionará bien.
Saludos

Última edición por jpinedo; 11/10/2003 a las 12:08
  #11 (permalink)  
Antiguo 10/10/2003, 08:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo que no entiendo es que pretendes hacer:

1) pregunta original ..
"como obtener los registros/campo e-mail en una variable todo contactenado":

$mail_usuarios: [email protected], [email protected], ......;

¿Este problema ya lo solventastes .. o no era esa la pregunta o que?.

2) .. Enviar e-mails uno por uno leyendo el dato (registro/campo) de e-mail de esa BD ...
(que es lo que preguntastes cuando pusistes el código que usas ..)

Explicate en que punto estamos .. por qué yo realmente no sé que ha pasado .. (en definitiva.. NO liar con várias preguntas en un mismo tema .. si tienes nuevas preguntas (para otras veces) incia un nuevo tema ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 11/10/2003, 01:45
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Perdón Cluster...

Tienes razón.. la pregunta original era otra, sino que cuando me puse a revisar el código que publicó necu vi algunos errores de sintaxis y traté de corregirlos, olvidándome por completo del origen.
Bueno, entonces necu, Cluster ya respondió cómo concatenar. Y yo creo que tu error estaba en poner $result en vez de $resultado, que es la variable que tu has empleado.
Otra cosa: El código que te publiqué debería funcionar, sólo que enviando un mail a la vez a cada uno.
Entonces, para ser más específico:
Utiliza el código así:
Código PHP:
//Las líneas anteriores permanecen igual
$headers="From: $nombre_necu <$necu_email>\nReply-To: $necu_email\nX-Mailer: PHP/".phpversion();//hasta aquí
//Ahora pon el código de Cluster pero cambiando $result por $resultado
$array_mails_usuarios=array();
while (
$row=mysql_fetch_array($resultado)){
     
$array_mails_usuarios[]=$row['email'];
}
$mails_usuarios=implode(",",$array_mails_usuarios);
unset(
$array_mails_usuarios);
//Después del código de Cluster envías los mails de esta forma:
mail($mails_usuarios$Subject$contenido$headers);
//El resto también es igual header("location :.... 
Bueno, ahora sí te debería funcionar como tú quieres.

Saludos
  #13 (permalink)  
Antiguo 11/10/2003, 08:17
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
amigos me voy a dar por vencido no se por ke no me resultaa
__________________
Practicando se Aprede
:-) :-)
  #14 (permalink)  
Antiguo 11/10/2003, 12:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Ahora sí...

Probé el código y descubrí un error que estaba cometiendo yo, pero que es bien sencillo de arreglar.

Se trata del "or die" que se pone después de cada consulta para visualizar errores de mysql.

Yo ponía:

... or die mysql_error();

Pero me faltaba el paréntesis, O sea que debería ser:

... or die (mysql_error());

Parece una tontería, pero lo probé y sólo era eso. Ahora sí va a funcionar.

Mil disculpas por el error que te hizo desanimar.

saludos

PD: Moderadores: Debo editar los mensajes anteriores y cambiar esas líneas o las dejo así?
  #15 (permalink)  
Antiguo 11/10/2003, 13:06
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
donde tendria ke ir entonces????

gracias por tu ayuda
__________________
Practicando se Aprede
:-) :-)
  #16 (permalink)  
Antiguo 11/10/2003, 14:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
necu .. Recomendación:

Inicia un nuevo mensaje poniendo el código que actualmente estés usando ..

Este mensaje lo iniciastes con otra pregunta y a mitad hicistes otra pregunta .. así que no liemos más la cosa y haz lo que te comento.

De paso, revisa las FAQ's de este foro y empieza a ver como se obtienen los datos de un "record set" (de una consulta a tu BD) .. cuando los veas en "echo" correctamente ahí aplicas tu mail() función.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 10:55.