Ubuntu Para Iniciantes

CRIAR RELATÓRIO PHP COM CABEÇALHO - HEADER

Relatórios muitas vezes são as dores de cabeça de qualquer programador, principalmente um iniciante, como eu. O PHP possui uma biblioteca fantástica que permite criar uma gama de relatórios em PDF, o FPDF.

Aqui no Ubuntu Para Iniciantes já postei alguns exemplos sobre como criar relatórios com gráficos utilizando o FPDF, ainda quero poder contribuir um pouco mais sobre isso.

Mas neste post quero apresentar uma funcionalidade bem bacana, criar um relatório com um cabeçalho de título, que se repita em cada página de resultado.

Vou deixar aqui os scripts para gerar o relatório em PDF e alguma explicações. Aqui você pode ver o o resultado final do relatório em pdf.

O FPDF é uma classe, ou seja, você precisa instanciar o objeto e usar, não é difícil só precisa um pouco de prática e buscar entender um pouco o conceito de orientação a objeto.

A biblioteca do FPDF possui um método para criar cabeçalhos, porém ele precisa ser sobrescrito, para que você possa utilizar conforme sua necessidade, é isso que quero mostrar.

Bom, primeiro passo, vamos criar uma base de dados, o exemplo que se segue está definido no Postgres, mas você pode utilizar o MySql ou qualquer SGDB que você tem familiaridade.

fpdf-relatorio-php-cabeçalho


Primeiro vamos criar um schema no banco Postgres mesmo, para ficar mais simples:

/*
  CRIAR SCHEMA RELATÓRIO
*/

CREATE SCHEMA relatorio

AUTHORIZATION postgres;

Agora vamos criar neste schema uma tabela para a inserção dos dados:

/*
CRIAR TABELA CLIENTE
*/


CREATE TABLE relatorio.cliente ( cli_codigo serial NOT NULL, cli_nome character varying(100),
valor numeric(18,2), CONSTRAINT cliente_pkey PRIMARY KEY (cli_codigo) )

O arquivo insert-dados.php possui um script para você popular sua tabela. Muito bem, agora vamos fazer NOSSA classe com a subscrição do cabeçalho, MeuFpdf.php clique para baixar o aquivo. Não se esqueça de já ter feito o download do FPDF.

Aqui você pode baixar os arquivos contendo a imagem, o arquivo resultado-relatorio.php, insert-dados.php por aqui relatorioFpdf.zip ou por aqui relatorioFpdf.tar.gz

<?php

/** * TITULO: GERAR RELATORIOS COM FPDF * CABEÇALHO GENERICO * ANO: 2015 * SITE: www.ubuntuinicianates.com.br * AUTOR: MARCELO WEIHMAYR */

//INCLUI A BIBLIOTECA FPDF 

include_once "fpdf18/fpdf.php";

class MeuFpdf extends Fpdf {
//criar header - CRIAR O CABEÇALHO

function Header (){
$this->Image('logo-rel.png',10,5,0,0,'PNG'); //COMENETE AQUI PARA MOSTRAR O TEXTO
$this->SetFont('Arial','B',14); // DETERMINA A FONTE DO CABEÇALHO A SER REPETIDO EM CADA PÁGINA 

$this->SetXY(10,40); // POSICIONA A CELL COM O TÍTULO NOME 
$this- >Cell(100,5,'Nome',1,1,'C'); //DESCOMENTE AQUI PARA MOSTRAR O TEXTO
$this->SetXY(110,40); // POSICIONA A CELL COM O TÍTULO VALOR 
$this->Cell(60,5,'Valor',1,1,'C'); //DESCOMENTE AQUI PARA MOSTRAR O TEXTO
}

}?>

Maravilha, agora vamos fazer o relatório propriamente dito, LEIA os comentários para entender o que está acontecendo. 

Neste arquivo, resultado-relatorio.php, será impresso o resultado da busca e gerado um arquivo em pdf. 

<?php


/**
* TITULO: GERAR RELATORIOS COM FPDF
* CABEÇALHO 
* ANO: 2015
* SITE: www.ubuntuinicianates.com.br
* AUTOR: MARCELO WEIHMAYR
*/

//conexão com banco de dados

$database = pg_connect('host=localhost port=5432 dbname=postgres user=postgres password=postgres');

//String contendo a instrução SQL para a busca do dados no banco

$sql = "select cli_nome, valor from relatorio.cliente";
//executa a pesquisa

$exec_sql = pg_query($sql);

// INCLUI NOSSA BIBLIOTECA COM O CABEÇALHO

include_once "MeuFpdf.php";

// CRIA UM NOVO OBJETO CONFORME NOSSA BIBLIOTECA

$pdf = new MeuFpdf;

$pdf->Addpage(); // ADICIONA UMA NOVA PÁGINA

//lista os resultados

//DEFINE A FONTE DOS DADOS A SEREM LISTADOS

$pdf->SetFont('Arial','',12);

//PARAMETRO PARA DEFINIR A POSIÇÃO DA PRIMEIRA LINHA EM CADA PÁGINA DE RESULTADO

$linha=45;

while($lista = pg_fetch_array($exec_sql)){

$nome = utf8_decode($lista['cli_nome']); // O utf8_decode pode não ser necessário, mas não machuca se deixar ;)

$valor= 'R$ '. $lista['valor']; // formatação simples para o valor

$pdf->SetXY(10,$linha);

$pdf->Cell(100,5,$nome,1,1,'L');

$pdf->SetXY(110,$linha);

$pdf->Cell(60,5,' '.$valor,1,1,'L');

$linha+=5;

/*Esta macumba é para definir as mesmas posições em cada página de resultado
Comente para fazer um teste e ver como o resultado sai.
O valor 270 é a contagem de $linha na primeira posição até a ultima posição no final da página
Eu defini com o valor de 45 por considerar um valor razoável, mas pode ser alterado*/

if ($linha > 270) {

$pdf->Addpage();

// Insere nova página para reconfigurar a impressão dos resultados, comente esta linha para ver o que ocorre 

$linha = 45; 

}

// fim da bacumba.

}


$pdf->Output();

?>

Bem pessoal, espero que tenha ajudado mais uma vez. A melhor forma de aprender é praticar. Se houver alguma dúvida deixe um comentário e se não houver deixe assim mesmo ;). 
Abraços a todos.
CRIAR RELATÓRIO PHP COM CABEÇALHO - HEADER Reviewed by Ubuntu para Iniciantes Marcelo Weihmayr on 17:59:00 Rating: 5

Nenhum comentário :

Olá, faça seu comentário com sugestões, dicas ou críticas

Powered By Blogger , Designed by Sweetheme

Formulário de contato

Nome

E-mail *

Mensagem *

Marcelo Weihmayr. Tecnologia do Blogger.