Foros del Web » Programando para Internet » PHP »

Problema ob_start() dentro de While

Estas en el tema de Problema ob_start() dentro de While en el foro de PHP en Foros del Web. Un saludo Masters, Bien lo que ocurre es que estoy enviando un correo electronico usando el metodo de : Código PHP: ob_start ();  include ( '/vservers/midominio/htdocs/mi_sistema/modulos/notificacion_agenda.php' ...
  #1 (permalink)  
Antiguo 07/03/2011, 14:25
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Problema ob_start() dentro de While

Un saludo Masters,

Bien lo que ocurre es que estoy enviando un correo electronico usando el metodo de :

Código PHP:
ob_start(); 
include (
'/vservers/midominio/htdocs/mi_sistema/modulos/notificacion_agenda.php'); 
$html=ob_get_contents();
ob_end_clean(); 
En este caso por ejemplo la consulta me devuelve 3 registros, pero cuando llega el correo no llega con la info de cada "id_agenda"
sino que llega 3 veces el mismo correo con la misma informaciòn.

Sospecho que no se està pasando el id_agenda de forma correcta o hay algun conflicto por colocar ob_start(); ob_end_clean(); dentro de un While...

El codigo completo es este. Gracias de antemano, es importante.


<?php require_once('../Connections/database.php');
Código PHP:
mysql_select_db($database_database$database);
$resultado80 mysql_query("SELECT * FROM notificaciones");
while(
$row mysql_fetch_array($resultado80)) 
{
$id_agenda=$row["id_agenda"];
$claim_id=$row["claim_id"];
$destinatario="[email protected]";

//Enviamos el Email
ob_start(); 
include (
'/vservers/midominio/htdocs/mi_sistema/modulos/notificacion_agenda.php'); 
$html=ob_get_contents();
ob_end_clean();
$remitente="[email protected]";
$sfrom="[email protected]"//cuenta que envia 
$sdestinatario=$destinatario//cuenta destino 
$ssubject="Notificacion Claim - ".$claim_id;
$shtml="$html"
$sheader="From:".$remitente."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html; charset=utf-8"
mail($sdestinatario,$ssubject,$shtml,$sheader);  
}
?> 
__________________
EL LIMITE ES EL UNIVERSO
  #2 (permalink)  
Antiguo 08/03/2011, 10:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema ob_start() dentro de While

sería bueno saber que hay en el código que incluyes, ya que a simple vista el código que muestras esta bien escrito... pues, no existen problemas con ob_start() ni nada de eso...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/03/2011, 15:04
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Respuesta: Problema ob_start() dentro de While

Bien, como tal no pude saber cual era el fallo pero optè por una soluciòn alternativa.

En el codigo original hacia una consulta y dentro del while le pasaba una variable a la pagina que estaba dentro del ob_start(), la cual hacìa una consulta màs especìfica y ponia los datos del mensaje.

La soluciòn es dejar las dos consultas anidadas y dentro del while de la consulta especifica (la que tiene los datos del mensaje), hacer el include dentro del ob_start.

De esta forma no hay que pasar la variable sino que en el include se cargan los datos de una vez.

genericamente seria algo como :

Código PHP:
mysql_select_db($database_database$database);
$resultado80 mysql_query("SELECT * FROM notificaciones");
while(
$row mysql_fetch_array($resultado80)) 
{
$id_agenda=$row["id_agenda"];
$claim_id=$row["claim_id"];

$resultado81 mysql_query("SELECT * FROM notificaciones WHERE id_agenda='$id_agenda'");
while(
$row mysql_fetch_array($resultado81)) 
{

//Enviamos el Email
ob_start(); 
include (
'notificacion_agenda.php'); 
$html=ob_get_contents();
ob_end_clean();

$destinatario="[email protected]";
$remitente="[email protected]";
$sfrom="[email protected]"//cuenta que envia 
$sdestinatario=$destinatario//cuenta destino 
$ssubject="Notificacion Claim - ".$claim_id;
$shtml="$html"
$sheader="From:".$remitente."\nReply-To:".$sfrom."\n"
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n"
$sheader=$sheader."Mime-Version: 1.0\n"
$sheader=$sheader."Content-Type: text/html; charset=utf-8"
mail($sdestinatario,$ssubject,$shtml,$sheader);  
}

Quizàs a alguien le sirva en el futuro.

Saludos.
__________________
EL LIMITE ES EL UNIVERSO

Etiquetas: Ninguno
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 16:24.