Icono del sitio Códigos de Programación

Curso de PHP y MySQL 9: Reporte en PDF

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:

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:

Salir de la versión móvil