9. Reporte en PDF
Requisitos:
- Servidor Web, PHP y MySQL.
- 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
1 2 3 4 5 6 7 8 9 |
<?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?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: