Tutorial para crear reportes en PDF con datos de MySQL desde PHP con ayuda de la librería FPDF. Agregamos Cabecera, Pie de Página, Imágenes y mas.
Requisitos:
- Servidor Web, PHP y MySQL. Ver Capitulo 1
- Liberia FPDF. Descargar
En el capitulo anterior aprendimos a crear un archivo en PDF, en este tutorial aprenderemos a hacer un reporte con datos de MySQL utilizando lo aprendido.
Para utilizar los datos de MySQL en nuestro reporte necesitamos establecer la conexión al servidor, seleccionando la Base de Datos e iniciando sesión con usuario y contraseña. Creamos un script para la conexión :
conexion.php
<?php
//servidor, usuario de base de datos, contraseña del usuario, nombre de base de datos
$mysqli = new mysqli("localhost","root","password","mexico");
if(mysqli_connect_errno()){
echo 'Conexion Fallida : ', mysqli_connect_error();
exit();
}
?>
Recuerda que para hacer la instancia la clase mysqli debemos agregar: dirección de servidor, usuario, contraseña y nombre de la base de datos, en ese orden.
Creamos una clase que herede las funciones de FPDF para utilizarla como plantilla para el encabezado y pie de página:
plantilla.php
<?php
require 'fpdf/fpdf.php';
class PDF extends FPDF
{
function Header()
{
$this->Image('images/logo.png', 5, 5, 30 );
$this->SetFont('Arial','B',15);
$this->Cell(30);
$this->Cell(120,10, 'Reporte De Estados',0,0,'C');
$this->Ln(20);
}
function Footer()
{
$this->SetY(-15);
$this->SetFont('Arial','I', 8);
$this->Cell(0,10, 'Pagina '.$this->PageNo().'/{nb}',0,0,'C' );
}
}
?>
Ahora creamos un script para llamar la conexión y crear el reporte:
reporte.php
<?php
include 'plantilla.php';
require 'conexion.php';
$query = "SELECT e.estado, m.id_municipio, m.municipio FROM t_municipio AS m INNER JOIN t_estado AS e ON m.id_estado=e.id_estado";
$resultado = $mysqli->query($query);
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFillColor(232,232,232);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(70,6,'ESTADO',1,0,'C',1);
$pdf->Cell(20,6,'ID',1,0,'C',1);
$pdf->Cell(70,6,'MUNICIPIO',1,1,'C',1);
$pdf->SetFont('Arial','',10);
while($row = $resultado->fetch_assoc())
{
$pdf->Cell(70,6,utf8_decode($row['estado']),1,0,'C');
$pdf->Cell(20,6,$row['id_municipio'],1,0,'C');
$pdf->Cell(70,6,utf8_decode($row['municipio']),1,1,'C');
}
$pdf->Output();
?>
Y el resultado es el siguiente:

Al detectar que la hoja termina crea una nueva con el encabezado y pie de pagina, ademas del encabezado de la tabla:

Recuerda suscribirte a nuestro canal de YouTube, ¡¡¡Es Gratis!!!
Tutorial en Vídeo:
