Foros del Web » Programando para Internet » PHP »

Enviar Consulta SQL por Mail

Estas en el tema de Enviar Consulta SQL por Mail en el foro de PHP en Foros del Web. Hola todos, necesito poder enviar una consulta que hago a mi base de datos por correo, el tema es que mi servidor no acepta la ...
  #1 (permalink)  
Antiguo 07/04/2008, 04:42
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Enviar Consulta SQL por Mail

Hola todos, necesito poder enviar una consulta que hago a mi base de datos por correo, el tema es que mi servidor no acepta la funcion mail y me da una forma alternativa de enviar los correos electronicos via web.

El Script que me brinda mi servidor es:

Código PHP:

<?
// Script PHP para el envio de Mails via HTTP usando SMTP AUTH.

// INCLUDE :: NO TOCAR
include("Mail.php"); // INCLUDE PEAR de PHP :: NO TOCAR 

//Datos del Remitente y Destinatario
$destinatario "[email protected]"// E-Mail Destinatario.
$headers["From"]    = "$nombre"// Nombre/E-Mail Remitente. (NO colocar ningun caracter punto (.))
$headers["To"]      = "$nombre"// Nombre/E-Mail Destinatario. 
$headers["Subject"] = "Examen"// Asunto del Mensaje.

// Cuerpo del Mensaje
$cuerpo_del_mensaje "
NOMBRE:
$nombre


// Datos del Servidor SMTP
$params["
host"] = "smtp.extendedcollege.com.ar"; // Host SMTP: host.midominio.com.ar
$params["
port"] = "25"; // Puerto: 25
$params["
auth"] = true; // Autentificacion: Activada
$params["
username"] = "contacto@extendedcollege.com.ar"; // Cuenta de Mail: [email protected]
$params["
password"] = "123456"; // Clave de Cuenta de Mail: xxxxxxxx

// Enviar el Mail :: NO TOCAR !!!
$mail_object =& Mail::factory("
smtp", $params); // Enviar el Mail :: NO TOCAR !!!
$mail_object->send($destinatario, $headers, $cuerpo_del_mensaje); // Enviar el Mail :: NO TOCAR !!!

// Descomentar la linea siguiente si tiene una pagina de agradecimiento, Ej: gracias.html.
include ("
gracias.html");
?>
Bueno, el tema es que yo quiero enviar la siguiente consulta al correo electronico que yo designe, o bien, que saque de la misma consulta...

La consulta que hago a la base es la siguiente

Código PHP:

<?
include("../libreria/conexion.php"); //INclude de conexion

conectar(); //conecto a la base de datos

//$_SESSION['usuario_id'];
$iduser2;
$consulta mysql_query("SELECT DISTINCT e.iduser, u.nombre FROM examen e INNER JOIN user u ON e.iduser = u.iduser WHERE e.iduser = '$iduser' ORDER BY nombre ");
while (
$row=mysql_fetch_array($consulta))
    {
//Echo del contenido
    
echo "".$row['nombre']."";
    echo 
"".$row['iduser']."";

$con mysql_query("SELECT p.pregunta, m.modulo, r.respuesta, r.correcta, e.fecha, e.iduser FROM examen e INNER JOIN respuestas r ON e.idrespuesta =  r.idrespuesta INNER JOIN pregunta p ON p.idpregunta = e.idpregunta INNER JOIN modulo m ON m.idmodulo = p.idmodulo WHERE e.iduser in('".$id."')");
while (
$linea mysql_fetch_array($con)) 
    {  
        echo 
"".$linea['pregunta']."";                        echo "".$linea['respuesta']."";
        echo 
"".$linea['correcta']."";
    } 
}  
desconectar(); //desconecto de la base de datos

?>
Alguna idea por favor de como puedo hacer... Gracias....
  #2 (permalink)  
Antiguo 07/04/2008, 05:32
 
Fecha de Ingreso: noviembre-2007
Mensajes: 55
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Enviar Consulta SQL por Mail

Seguramente tienes que activar esta funcion el el php.ini, mirate este post:
http://www.forosdelweb.com/f18/habilitar-funcion-mail-php-385788/

Saludos
  #3 (permalink)  
Antiguo 07/04/2008, 07:20
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: Enviar Consulta SQL por Mail

Gracias por responder, pero lo que yo necesito es alguna forma de enviar el correo con la opcion de envio de correo que me brinda mi servidor, ya que no me permite la modificacion del php.ini....

Por ello necesitaria alguna forma para enviar la consulta via mail, con la forma que expuse arriba... Gracias igual...
  #4 (permalink)  
Antiguo 07/04/2008, 11:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Enviar Consulta SQL por Mail

Hola cmarrero,

Solo es necesario que hagas tu consulta y guardes el resultado en la variable $cuerpo_del_mensaje, y posteriormente incluyas el código que te da tu hosting.

Saludos.
  #5 (permalink)  
Antiguo 07/04/2008, 12:00
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: Enviar Consulta SQL por Mail

Si, eso intente GatorV pero no lo logre... ahora estaba pensando una manera...

si a toda la consulta a la base la convierto en una funcion y dentro de la variable $cuerpo_del_mensaje coloco funcion(); eso deberia enviarla supongo???

La verdad es que estoy medio perdido, por que colocar toda la consulta en una sola variable es algo complicado para mi....

Un ejemplo corto de como lo aria y yo me las arreglo..

Gracias....
  #6 (permalink)  
Antiguo 07/04/2008, 12:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Enviar Consulta SQL por Mail

Hola cmarrero, lo puedes hacer así:

Código PHP:
ob_start();
// toda tu consulta, etc.
echo "algo bla bla bla";
$cuerpo_del_mensaje ob_get_clean(); 
Saludos.
  #7 (permalink)  
Antiguo 07/04/2008, 12:19
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Re: Enviar Consulta SQL por Mail

Más o menos sería sustituir los echo por la variable $cuerpo_del_mensaje concatenándolo con ".=":
echo "".$row['nombre']."";
echo "".$row['iduser']."";

por:

$cuerpo_del_mensaje .= "$row['nombre']\n";
$cuerpo_del_mensaje .= "$row['iduser']\n";
$cuerpo_del_mensaje .= "$linea['pregunta']\n";
......

Todo el texto que obtienes de tu consulta se va acumulando en la variable $cuerpo_del_mensaje, que es la que luego enviarás por email. Eso sí, tendrías que hacer este proceso antes de enviar el email, claro.

Espero haberme expresado bien...
  #8 (permalink)  
Antiguo 07/04/2008, 13:51
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: Enviar Consulta SQL por Mail

Gracias pero tengo una duda sobre como se mostrara el diseño del envio de correo, com otiene eticas html, no se muestra el mail...

Saludos y gracias por contestar

PD// me gustaria si GatorV me puede explicar lo que me propone, ya que no se bien que es lo que hacen esas funciones... gracias

Última edición por cmarrero; 07/04/2008 a las 14:00
  #9 (permalink)  
Antiguo 07/04/2008, 14:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Enviar Consulta SQL por Mail

Hola cmarrero,

Lo que hace ob_start y ob_get_clean es primero empezar a capturar el Buffer de salida (es decir todo lo que imprimes con echo, print, etc. y lo captura en una variable (la cual rescatas usando ob_get_clean().

Eso lo puedes luego enviar por correo, con el código que tienes.

Saludos.
  #10 (permalink)  
Antiguo 07/04/2008, 15:12
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: Enviar Consulta SQL por Mail

Esto es lo que hice, pero no me envia el mail... espero que me puedan decir por que.. gracias...

Código PHP:
<?
ob_start
();
include(
"../libreria/conexion.php");
conectar(); //conecto a la base de datos

//$_SESSION['usuario_id'];
$iduser2;
$consulta mysql_query("SELECT DISTINCT e.iduser, u.nombre FROM examen e INNER JOIN user u ON e.iduser = u.iduser WHERE e.iduser = '$iduser' ORDER BY nombre ");
while (
$row=mysql_fetch_array($consulta))
            {
            echo 
"".$row['nombre']."";
            echo 
"".$row['iduser']."";
$con mysql_query("SELECT p.pregunta, m.modulo, r.respuesta, r.correcta, e.fecha, e.iduser FROM examen e INNER JOIN respuestas r ON e.idrespuesta =  r.idrespuesta INNER JOIN pregunta p ON p.idpregunta = e.idpregunta INNER JOIN modulo m ON m.idmodulo = p.idmodulo WHERE e.iduser in('".$id."')");
while (
$linea mysql_fetch_array($con)) 
                        {  
                        echo 
"".$linea['pregunta'].""
                        echo 
"".$linea['respuesta'].""
                        echo 
"".$linea['correcta'].""
                        } 
            }  
desconectar();
$cuerpo_del_mensaje ob_get_clean();  
// INCLUDE :: NO TOCAR
include("Mail.php"); // INCLUDE PEAR de PHP :: NO TOCAR 
 //INclude de conexion
 //include para imprimir fecha del dia

 //desconecto de la base de datos
//Datos del Remitente y Destinatario
$destinatario "[email protected]"// E-Mail Destinatario.
$headers["From"]    = "nombre"// Nombre/E-Mail Remitente. (NO colocar ningun caracter punto (.))
$headers["To"]      = "nombre"// Nombre/E-Mail Destinatario. 
$headers["Subject"] = "Examen"// Asunto del Mensaje.


// Datos del Servidor SMTP
$params["host"] = "smtp.extendedcollege.com.ar"// Host SMTP: host.midominio.com.ar
$params["port"] = "25"// Puerto: 25
$params["auth"] = true// Autentificacion: Activada
$params["username"] = "[email protected]"// Cuenta de Mail: [email protected]
$params["password"] = "123456"// Clave de Cuenta de Mail: xxxxxxxx

// Enviar el Mail :: NO TOCAR !!!
$mail_object =& Mail::factory("smtp"$params); // Enviar el Mail :: NO TOCAR !!!
$mail_object->send($destinatario$headers$cuerpo_del_mensaje); // Enviar el Mail :: NO TOCAR !!!

// Descomentar la linea siguiente si tiene una pagina de agradecimiento, Ej: gracias.html.
//include ("gracias.html");
?>
  #11 (permalink)  
Antiguo 07/04/2008, 16:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Enviar Consulta SQL por Mail

Hola cmarrero,

En teoría tu código se ve bien, si no te esta enviando el mail, es probable que haya un problema en tu servidor SMTP, ponte en contacto con tu hosting para que lo arreglen.

Saludos.
  #12 (permalink)  
Antiguo 08/04/2008, 06:05
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Re: Enviar Consulta SQL por Mail

Hola todos ya lo termine.. y funciona.... pero necesitaria saber como hacer para que funcione en un diseño, digamos con etiquetas html, ya que se las agrego con comillas adelantes de la variable que me muestra el resultado y no me envie el mail....

Alguna idea plis...

Aqui posteo el codigo que me funciona...

Código PHP:
<?
// Script PHP para el envio de Mails via HTTP usando SMTP AUTH.

// INCLUDE :: NO TOCAR
include("Mail.php"); // INCLUDE PEAR de PHP :: NO TOCAR

//Datos del Remitente y Destinatario
$destinatario "[email protected]"// E-Mail Destinatario.
$headers["From"]    = "$nombre"// Nombre/E-Mail Remitente. (NO colocar ningun caracter punto (.))
$headers["To"]      = "$nombre"// Nombre/E-Mail Destinatario.
$headers["Subject"] = "Examen"// Asunto del Mensaje.

include("../libreria/conexion.php"); //INclude de conexion

conectar(); //conecto a la base de datos

//$_SESSION['usuario_id'];
$iduser2;
$consulta mysql_query("SELECT DISTINCT e.iduser, u.nombre FROM examen e INNER JOIN user u ON e.iduser = u.iduser WHERE e.iduser = '$iduser' ORDER BY nombre ");
while (
$row=mysql_fetch_array($consulta))
    {
//Echo del contenido
    
$return .=$row['nombre'];
    
$return .=$row['iduser'];
$id=$row['iduser'];
$con mysql_query("SELECT p.pregunta, m.modulo, r.respuesta, r.correcta, e.fecha, e.iduser FROM examen e INNER JOIN respuestas r ON e.idrespuesta =  r.idrespuesta INNER JOIN pregunta p ON p.idpregunta = e.idpregunta INNER JOIN modulo m ON m.idmodulo = p.idmodulo WHERE e.iduser in('".$id."')");
while (
$linea mysql_fetch_array($con))
    {  
        
$return .=  $linea['pregunta'];
        
$return .=  $linea['respuesta'];
        
$return .=  $linea['correcta'];
    }
}  
desconectar(); //desconecto de la base de datos

// Cuerpo del Mensaje
$cuerpo_del_mensaje "
NOMBRE:
$nombre
Datos:
$return
"
;


// Datos del Servidor SMTP
$params["host"] = "smtp.extendedcollege.com.ar"// Host SMTP: host.midominio.com.ar
$params["port"] = "25"// Puerto: 25
$params["auth"] = true// Autentificacion: Activada
$params["username"] = "[email protected]"// Cuenta de Mail: [email protected]
$params["password"] = "123456"// Clave de Cuenta de Mail: xxxxxxxx

// Enviar el Mail :: NO TOCAR !!!
$mail_object =& Mail::factory("smtp"$params); // Enviar el Mail :: NO TOCAR !!!
$mail_object->send($destinatario$headers$cuerpo_del_mensaje); // Enviar el Mail :: NO TOCAR !!!

// Descomentar la linea siguiente si tiene una pagina de agradecimiento, Ej: gracias.html.
//include ("gracias.html");
?>
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 02:50.