Foros del Web » Programando para Internet » PHP »

Problema al pasar variables de sesión a un html preparado para convertirse en PDF

Estas en el tema de Problema al pasar variables de sesión a un html preparado para convertirse en PDF en el foro de PHP en Foros del Web. Hola que tal a todos, tengo un problema en el momento de mostrar las variables de sesion en codigo html que despues convierto a pdf ...
  #1 (permalink)  
Antiguo 29/04/2011, 09:44
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Exclamación Problema al pasar variables de sesión a un html preparado para convertirse en PDF

Hola que tal a todos, tengo un problema en el momento de mostrar las variables de sesion en codigo html que despues convierto a pdf con la libreriria dompdf, la verdad, no se cual sea realmente el problema en el codigo. Estoy atorado con esto ya que cuando no coloco las varibles el pdf se genera bien y lo envia al correo electrónico, pero cuando sucede el problema se salta el envio y me muestra los resultados en el navegador, cosa que no deberia suceder.

Les paso el codigo para que puedan visualizar donde esta mi problema.
Gracias anticipadas.
<?php
require_once('./dompdf/dompdf_config.inc.php');
require_once('./phpmailer/class.phpmailer.php');

//Capturamos variables de sesion
$idmaquina=$_GET["idmaquinariax"];
$tipomaquina=$_GET["tipo"];

//Con esta linea ya se pueden hacer muchas cosas
$titulo = utf8_decode(htmlentities($_POST['titulo']));
$nombre = utf8_decode(htmlentities($_POST['nombre2']));
$apellidos= utf8_decode(htmlentities($_POST['apellidos']));
$direccion = utf8_decode(htmlentities($_POST['direccion']));
$ciudad = utf8_decode(htmlentities($_POST['ciudad']));
$telefono = utf8_decode(htmlentities($_POST['telefono']));
$celular = utf8_decode(htmlentities($_POST['celular']));
$nextel = utf8_decode(htmlentities($_POST['nextel']));
$email = utf8_decode(htmlentities($_POST['email']));
//Insertamos registros de cliente en BD
//Conectamos con MySQL
$conexion = mysql_connect("******", "******", "*****") or die("Error al conectarse con el servidor MySQL");
mysql_select_db("Catalogo", $conexion);

$sql = "INSERT INTO cotizacion_online (nombre, apellidos, direccion, ciudad, telefono, celular, nextel, email, fecha, id_maquinaria) values(
'$nombre','$apellidos','$direccion','$ciudad','$te lefono','$celular','$nextel','$email','".date("Y/m/d")."','$idmaquina');";
mysql_query($sql);

// creo el objeto phpmailer
$mail = new PHPMailer;
// asigno el envío por SMTP mucho más rápido y fiable
$mail->Mailer = "smtp";
// mi servidor requiere autentificación
$mail->SMTPAuth = true;
// utilizo constantes almacenadas fuera del script para darle más seguridad a los datos, aparte de así poder reutilizar los mismos
$mail->Username = '[email protected]';
$mail->Host = '[email protected]';
$mail->Password = 'XXXXX';
$mail->From = '[email protected]';
$mail->FromName = '[email protected]';
// aumentar el timeout es recomendable si estas en un hosting gratuito
$mail->Timeout=30;
//************************************************** ************************************************** *************
//Obtenemos los registros de la base de datos Catalogo
$queEmp = "SELECT * FROM maquinaria where idmaquinaria=$idmaquina";
$query = mysql_query($queEmp, $conexion) or die(mysql_error());
$totEmp = mysql_num_rows($query);
$strHtml = utf8_decode('<html><body><Title>Cotización</Title>
<table width="100%" style="border:0">
<tr valign="middle">
<td colspan="6" align="center" bgcolor="#FFFFFF"><img src="images/espacio.jpg" alt="" width="100%" height="180"></td>
</tr>
<tr valign="middle">
<td colspan="6" align="center" bgcolor="#FFFFFF"><img src="images/Banner_importadora.jpg" alt="" width="100%" height="180"></td>
</tr>
<tr valign="middle">
<td colspan="6" align="center" bgcolor="#FFFFFF"><img src="images/espacio.jpg" alt="" width="100%" height="180"></td>
</tr>
<tr valign="middle">
<td colspan="6" align="center"></td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF"></td>
<td align="left" bgcolor="#FFFFFF">Cliente:</td>
<td align="left" bgcolor="#FFFFFF">'.htmlentities("$nombre $apellidos").'</td>
<td colspan="3" align="center" bgcolor="#FFFFFF">&nbsp;</td>
<td colspan="2" rowspan="4" bgcolor="#FFCC33" border="1">&nbsp;</td></td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF"></td>
<td align="left" bgcolor="#FFFFFF">Dirección:</td>
<td align="left" bgcolor="#FFFFFF">'.htmlentities("$direccion").':</td>
<td colspan="3" align="center" bgcolor="#FFFFFF">&nbsp;</td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF">Dirección:</td>
<td align="left" bgcolor="#FFFFFF">Teléfono:</td>
<td colspan="3" align="center" bgcolor="#FFFFFF">&nbsp;</td>
</tr>
<tr>
<td align="left" bgcolor="#FFFFFF">Dirección:</td>
<td align="left" bgcolor="#FFFFFF">Email:</td>
<td colspan="3" bgcolor="#FFFFFF"></td>
</tr>
<tr>
<td colspan="6" bgcolor="#FFFFFF"><Strong>'.utf8_decode("Ponemos a su apreciable consideración la siguiente cotización:").'</Strong>&nbsp;</td>
</tr>
<tr>
<td bgcolor="#FF9900"><strong>Tipo Maquinaria</strong></td>
</tr>');

while ($resEmp = mysql_fetch_assoc($query)){
$marca = $resEmp['marca'];
$serie = $resEmp['serie'];
$anio = $resEmp['year'];
$descripcion = $resEmp['descripcion'];
$precio = $resEmp['precio_lista'];

$clave=$resEmp['clave'];
$imagen=$resEmp['imagen'];
$strHtml .= '<tr>';
$strHtml .= '<td><img src="'.strtolower($imagen.$clave).'.jpg"/></td>';
echo $strHtml.'';
$strHtml .= '<td>Marca:<Br>'. $marca .'<Br>Serie:<Br>'. $serie .'<Br>Año:<Br>'. $anio .'<Br>Descripción:<Br>'. $descripcion .'<Br>Precio:<Br>'. $precio .'</td>';
$strHtml .= '</tr>
<tr>
<td colspan="6">&nbsp;</td>
</tr>
<tr>
<td colspan="6" align="center" valign="middle"><Br><Br><Br><Br><Br><Br><Br><Br><B r><Br><Br><Br><Br><Br><Br><Br><Br><img src="images/Banner_importadora_Pie.jpg" alt="" width="800" height="150"></td>
</tr>';
}
$strHtml .= '</table></body></html>';
$dompdf = new DOMPDF();
//$dompdf->set_paper('letter');
$dompdf->load_html(utf8_decode($strHtml));
$dompdf->render();
//$dompdf->stream("cotizacion.pdf");
$nombre_archivo = 'cotizacion.pdf';
if (!$gestor = fopen($nombre_archivo, 'w')){
echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}
if (fwrite($gestor, $dompdf->output()) === FALSE) {
echo "No se puede escribir al archivo ($nombre_archivo)";
exit;
}
echo "Exito, se escribió al archivo ($nombre_archivo)";
fclose($gestor);
//$dompdf->stream("cotizacion.pdf",array("Attachment"=>0)) ; // switch Attachment to 1 to view PDF in Acrobat.
$mail->ClearAllRecipients();
$mail->ClearAttachments();
$mail->AddAddress("$email");
$mail->Subject = 'Prueba de correo electronico';
$mail->Body = 'Mensaje';
// nombre_adjunto es el nombre que verá el usuario cuando reciba el mail como nombre del archivo
$mail->AddAttachment($nombre_archivo,'Cotizacion.pdf') ;
// texto alternativo por si el usuario no admite html
$mail->AltBody = 'Mensaje de prueba mandado solo texto';
$exito = $mail->Send();
//borro el fichero real
if(!$exito){
//echo 'Problemas enviando correo electrónico';
echo ''.$mail->ErrorInfo;
}
else{
//unlink($nombre_archivo);
}
header("Location: barredoras.php");
////Probando Probando

Ojala que me haya podido explicar correctamente.

Gracias
  #2 (permalink)  
Antiguo 29/04/2011, 10:39
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Problema al pasar variables de sesión a un html preparado para convertirse

1 te recomiendo que le quites las lineas que no usas y que comentaste en el código para que sea mas claro.
2 formatea el código, seleccionándolo y en donde highlight elijes php.
3 En la linea $dompdf->load_html(utf8_decode($strHtml)); no veo necesario hacer el utf8_decode, ya que dompdf trabaja incluso mejor con utf8

Etiquetas: resultados
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 17:10.