SlideShare ist ein Scribd-Unternehmen logo
1 von 5
Usando o iReport como gerador de relatórios para PHP

Veremos hoje uma solução para utilizar um gerador de relatórios para a linguagem
PHP. Consiste no uso do trabalho em conjunto de relatórios JasperReports e o
pacote PHPJasperXML.
O que me motivou a buscar esta solução foi a procura por um gerador de relatórios
para PHP, na grande maioria das vezes com insucesso.
A linguagem PHP é extremamente flexível e muitos desenvolvedores que a
utilizam, quando necessitam desenvolver relatórios, fazem seu próprio código,
desenvolvendo suas próprias quebras de linha etc. Só que o uso de softwares
geradores de relatórios, os chamados reportsgenerators, trazem inúmeras
vantagens ao desenvolvedor. Além de ser mais profissional o uso destes
softwares, pois poupa tempo de desenvolvimento por serem muito mais fáceis de
confeccionar do que se elaborar um código para esta finalidade, é também útil
quando se necessita de suporte, pois diversos usuários do mundo inteiro utilizam
desses softwares.

iReport
O iReport é um desenhador de layouts para JasperReports. É muito utilizado por
desenvolvedores da linguagem Java, sendo uma alternativa livre ao excelente
Crystal Reports. Neste link o download pode ser feito, além de conter tutoriais. É
necessário ter a suíte JDK já instalada para fazer a instalação do iReport. Não é o
foco do artigo a explicação de como utilizar o iReport.
Além de ser muito intuitivo e de fácil uso, é útil em praticamente todas as
necessidades na confecção de um relatório. Traz diversas opções como uso de
código de barras, sub-relatórios e etc. O iReport permite que os relatórios sejam
gerados em XML, PDF, HTML, DOCX, ODT, dentre outros formatos.
Ao inserir as informações de conexão com o banco de dados (o iReport traz
diversas opções como JDBC, Conexão com Hibernate, XML e etc), processo que
pode ser visto aqui, é gerado um arquivo de extensão jrxml. Ao ser compilado, um
arquivo de extensão jasper também é gerado (arquivo executável do relatório). Faz
analogia à linguagem Java, que tem o código residente nos arquivos de extensão
JAVA (no caso do iReport, extensão jrxml). Depois de compilados são gerados
arquivos de extensão CLASS (no iReport, jasper).

PHPJasperXML
O PHPJasperXML possibilita a leitura de arquivos jrxml, feitos utilizando o iReport,
para transformá-los em relatórios no formato PDF, com o auxílio da classe FPDF.
É escrito em PHP e muito fácil de ser configurado. É também uma solução
alternativa ao PHP/Java Bridge.
Na página do projeto é possível fazer o download do código. Além de conter
tutoriais.
Para seu uso é necessário basicamente editar o arquivo setting.php, que contém
as variáveis indicativas da conexão com banco de dados.
O arquivo PHPJasperXML.inc contém a classe PHPJasperXML, que faz todo o
"trabalho pesado" de conectar com o banco de dados (vem configurada para
MySQL), ler o conteúdo arquivo jrxml e junto com a classe FPDF, gerar o relatório
em PDF.

Exemplo de utilização
Irei exemplificar o uso do iReport com a classe PHPJasperXML.
Para nosso exemplo é necessário ter o SGBD MySQL instalado. Crie o banco de
dados com os seguintes comandos:
CREATEDATABASEProjetoPHP;

USEProjetoPHP;

CREATETABLEusuarios (

id INT(11) NOTNULLAUTO_INCREMENT, nomeVARCHAR(50),

PRIMARYKEY (id)

);

INSERTINTOusuarios (nome) VALUES ('PHP'), ('MySQL'),
('JasperReports'), ('PHPJasperXML');
Após criar nosso banco de dados, chamado ProjetoPHP, é o momento de elaborar
o relatório. Para nosso exemplo, o relatório será chamado de phpjasperxml.jrxml. A
conexão com o banco de dados que criamos deverá ser feita no iReport (esse
processo é exemplificado em um link no texto introdutório do iReport, acima). Após
criada a conexão, vamos inserir a seguinte query no Report Query do relatório
(para ver como inserir queries no iReport, confiraaqui):
SELECT
* FROMusuarios;

Esta query nos retornará dois fields (id e nome) que deverão estar no relatório.
Finalizando nosso relatório, deverá ser inserido um parâmetro chamado descricao.
Para saber como adicionar parâmetros em um relatório com o iReport,
confira aqui.
Depois de feito o download do PHPJasperXML, basta extrair a pasta class e o
arquivo setting.php para a pasta de seu projeto.
A figura abaixo mostra a elaboração deste relatório no iReport:
Figura 1: Elaboração do relatório no iReport.
Para nosso exemplo, o projeto será chamado relatorioPHP. No arquivo setting.php,
você deve informar o caminho para seu banco de dados, como a seguir:
<?php

$server="localhost";

$db="phpjasperxml";

$user="root";

$pass="phpmaster";

$version="0.6d";

?>

A variável $version não precisa ser editada. Você pode criar um arquivo que irá
instanciar a classe PHPJasperXML. Vamos chamar este arquivo de exemplo.php e
seu conteúdo é descrito abaixo:
<?php

include_once('class/fpdf/FPDF.php');

include_once("class/PHPJasperXML.inc");

include_once ('setting.php');

$xml = simplexml_load_file("phpjasperxml.jrxml"); //informe onde está
seu arquivo jrxml

$PHPJasperXML = newPHPJasperXML();

$PHPJasperXML->debugsql=false;
$descricao=$_GET["descricao"]; //recebendo o parâmetro descrição

$PHPJasperXML->arrayParameter=array("descricao"=>$descricao); //passa
o parâmetro cadastrado no iReport

$PHPJasperXML->xml_dismantle($xml);

$PHPJasperXML->connect($server,$user,$pass,$db);

$PHPJasperXML->transferDBtoArray($server,$user,$pass,$db);

$PHPJasperXML->outpage("I");

?>
Agora vamos testar nossa aplicação. Basta ir ao browser e
digitarhttp://localhost/relatorioPHP/exemplo.php?descricao=HelloWord
Se tudo ocorrer como o esperado, será exibido o relatório em PDF, de acordo com
a figura 2:




Figura 2: Relatório gerado
O parâmetro é passado pelo método GET e tratado no nosso arquivo
exemplo.php. Como este parâmetro já é esperado pelo relatório, definido em sua
criação, é repassado pela classe PHPJasperXML ao nosso relatório.
Uma observação é que no momento da elaboração do iReport, não se deve
colocar nenhum objeto (Fields, parâmetros, Labels e etc) nas bandas Title e
Column Header do relatório. Isso porque a classe PHPJasperXML não trata essas
bandas e os objetos contidos nela simplesmente não são exibidos no relatório.
Essa observação só vale caso você queira utilizar o iReport com a classe
PHPJasperXML, que é o nosso caso. Nos relatórios gerados pelo iReport (e não
pela classe PHPJapserXML), os elementos contidos nestas bandas são exibidos
normalmente.
Como foi dito, PHPJasperXML vem configurado para um conexão com MySQL.
Para o que precisei foi necessário adaptar esta classe ao PostgreSQL. Meu amigo
Ronaldo Meneguite disponibilizou em seu site, em artigo publicado também por
ele, a classe modificada, que pode ser vista aqui.
*
Gostaria de agradecer à colega de trabalho, Jéssica Boalente Carvalho, pela ajuda
na procura desta solução e na utilização da mesma. Ao amigo Ronaldo Louro
Meneguite, por postar em seu site a classe PHPJasperXML que modifiquei aos
moldes do PostgreSQL e pela troca de experiências sobre o assunto.


Fonte.:
http://imasters.com.br/artigo/15736/php/usando_o_ireport_como_gerador_de_relatorios_pa
ra_php/

Weitere ähnliche Inhalte

Was ist angesagt?

Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosFábio dos Reis
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasCaio Lima
 
ODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosCaio Lima
 
ODI Tutorial - Desenvolvendo Procedures
ODI Tutorial - Desenvolvendo ProceduresODI Tutorial - Desenvolvendo Procedures
ODI Tutorial - Desenvolvendo ProceduresCaio Lima
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 
ODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasCaio Lima
 

Was ist angesagt? (20)

Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Sql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentosSql com sql server básico - Bóson treinamentos
Sql com sql server básico - Bóson treinamentos
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
ODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de Dados
 
Aula 12 banco de dados
Aula 12   banco de dadosAula 12   banco de dados
Aula 12 banco de dados
 
Makefile
MakefileMakefile
Makefile
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
07 procedures-curso gxxbr
07 procedures-curso gxxbr07 procedures-curso gxxbr
07 procedures-curso gxxbr
 
ODI Tutorial - Desenvolvendo Procedures
ODI Tutorial - Desenvolvendo ProceduresODI Tutorial - Desenvolvendo Procedures
ODI Tutorial - Desenvolvendo Procedures
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
Aula 11 banco de dados
Aula 11   banco de dadosAula 11   banco de dados
Aula 11 banco de dados
 
15 web panels-curso gxxbr
15 web panels-curso gxxbr15 web panels-curso gxxbr
15 web panels-curso gxxbr
 
Access
AccessAccess
Access
 
ODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para TabelasODI Series - Importar Arquivos Texto para Tabelas
ODI Series - Importar Arquivos Texto para Tabelas
 

Andere mochten auch

ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2dmc digital media center GmbH
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?iniciativaverds
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipmanjonesshipman
 
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Daniel Rehn
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Daniel Rehn
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...dbi services
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Daniel Rehn
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáZarathon Maia
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IIDaniel Rehn
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T IIHerdwangerSV
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tFrancois Ostyn
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPelliando dias
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea FC Barcelona
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxElton Minetto
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27domidp
 

Andere mochten auch (20)

ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
ECM-Webinar: Alfresco Migration Bestandsdaten Teil 2
 
Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?Què ha fet ICV-EUiA amb el meu vot?
Què ha fet ICV-EUiA amb el meu vot?
 
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & ShipmanDominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
Dominator: Rectifieuse plane de profils à CN et avance lente de Jones & Shipman
 
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013
 
NotORM
NotORMNotORM
NotORM
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013
 
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
SQL Server 2008 'Best Practices' - Stéphane Haby, dbi services - Mövenpick La...
 
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013
 
Apresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc QuixadáApresentação Java Web Si Ufc Quixadá
Apresentação Java Web Si Ufc Quixadá
 
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung IICampus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
Campus M21 | Medienpraxis III: Online / Social Media - Vorlesung II
 
Digitale Mentalität II
Digitale Mentalität IIDigitale Mentalität II
Digitale Mentalität II
 
02.10.2011 SC B.A.T II
02.10.2011   SC B.A.T II02.10.2011   SC B.A.T II
02.10.2011 SC B.A.T II
 
Présentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@tPrésentation LMAX Disruptor So@t
Présentation LMAX Disruptor So@t
 
Ligação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHPLigação do Flex a um backend LAMP usando AMFPHP
Ligação do Flex a um backend LAMP usando AMFPHP
 
Tutorialphpmyadmin
TutorialphpmyadminTutorialphpmyadmin
Tutorialphpmyadmin
 
MySQL Query Optimization
MySQL Query OptimizationMySQL Query Optimization
MySQL Query Optimization
 
Presentació assamblea
Presentació assamblea Presentació assamblea
Presentació assamblea
 
Einführung in SCRUM
Einführung in SCRUMEinführung in SCRUM
Einführung in SCRUM
 
Otimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - TchelinuxOtimizando aplicações Zend Framework - Tchelinux
Otimizando aplicações Zend Framework - Tchelinux
 
Atelier agile 2009_09_27
Atelier agile 2009_09_27Atelier agile 2009_09_27
Atelier agile 2009_09_27
 

Ähnlich wie Gerador de relatórios PHP com iReport e PHPJasperXML

JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLtarginosilveira
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniterRaniere de Lima
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Apostila php
Apostila phpApostila php
Apostila phpfelgamer
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHPKratos879
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Thyago Maia
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHPLeonardo Soares
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1Norivan Oliveira
 

Ähnlich wie Gerador de relatórios PHP com iReport e PHPJasperXML (20)

Php
PhpPhp
Php
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Mini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOLMini-curso RubyOnRails CESOL
Mini-curso RubyOnRails CESOL
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Crud
CrudCrud
Crud
 
Palestra
PalestraPalestra
Palestra
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
Slide 01 introdução ao php e ao code igniter
Slide 01   introdução ao php e ao code igniterSlide 01   introdução ao php e ao code igniter
Slide 01 introdução ao php e ao code igniter
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
A Linguagem Php
A Linguagem PhpA Linguagem Php
A Linguagem Php
 
Guia php
Guia phpGuia php
Guia php
 
Apostila php
Apostila phpApostila php
Apostila php
 
Apostila básica de PHP
Apostila básica de PHPApostila básica de PHP
Apostila básica de PHP
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2
 
Banco de dadados MySQL com PHP
Banco de dadados MySQL com PHPBanco de dadados MySQL com PHP
Banco de dadados MySQL com PHP
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Python CGI
Python CGIPython CGI
Python CGI
 

Gerador de relatórios PHP com iReport e PHPJasperXML

  • 1. Usando o iReport como gerador de relatórios para PHP Veremos hoje uma solução para utilizar um gerador de relatórios para a linguagem PHP. Consiste no uso do trabalho em conjunto de relatórios JasperReports e o pacote PHPJasperXML. O que me motivou a buscar esta solução foi a procura por um gerador de relatórios para PHP, na grande maioria das vezes com insucesso. A linguagem PHP é extremamente flexível e muitos desenvolvedores que a utilizam, quando necessitam desenvolver relatórios, fazem seu próprio código, desenvolvendo suas próprias quebras de linha etc. Só que o uso de softwares geradores de relatórios, os chamados reportsgenerators, trazem inúmeras vantagens ao desenvolvedor. Além de ser mais profissional o uso destes softwares, pois poupa tempo de desenvolvimento por serem muito mais fáceis de confeccionar do que se elaborar um código para esta finalidade, é também útil quando se necessita de suporte, pois diversos usuários do mundo inteiro utilizam desses softwares. iReport O iReport é um desenhador de layouts para JasperReports. É muito utilizado por desenvolvedores da linguagem Java, sendo uma alternativa livre ao excelente Crystal Reports. Neste link o download pode ser feito, além de conter tutoriais. É necessário ter a suíte JDK já instalada para fazer a instalação do iReport. Não é o foco do artigo a explicação de como utilizar o iReport. Além de ser muito intuitivo e de fácil uso, é útil em praticamente todas as necessidades na confecção de um relatório. Traz diversas opções como uso de código de barras, sub-relatórios e etc. O iReport permite que os relatórios sejam gerados em XML, PDF, HTML, DOCX, ODT, dentre outros formatos. Ao inserir as informações de conexão com o banco de dados (o iReport traz diversas opções como JDBC, Conexão com Hibernate, XML e etc), processo que pode ser visto aqui, é gerado um arquivo de extensão jrxml. Ao ser compilado, um arquivo de extensão jasper também é gerado (arquivo executável do relatório). Faz analogia à linguagem Java, que tem o código residente nos arquivos de extensão JAVA (no caso do iReport, extensão jrxml). Depois de compilados são gerados arquivos de extensão CLASS (no iReport, jasper). PHPJasperXML O PHPJasperXML possibilita a leitura de arquivos jrxml, feitos utilizando o iReport, para transformá-los em relatórios no formato PDF, com o auxílio da classe FPDF. É escrito em PHP e muito fácil de ser configurado. É também uma solução alternativa ao PHP/Java Bridge. Na página do projeto é possível fazer o download do código. Além de conter tutoriais. Para seu uso é necessário basicamente editar o arquivo setting.php, que contém as variáveis indicativas da conexão com banco de dados. O arquivo PHPJasperXML.inc contém a classe PHPJasperXML, que faz todo o "trabalho pesado" de conectar com o banco de dados (vem configurada para
  • 2. MySQL), ler o conteúdo arquivo jrxml e junto com a classe FPDF, gerar o relatório em PDF. Exemplo de utilização Irei exemplificar o uso do iReport com a classe PHPJasperXML. Para nosso exemplo é necessário ter o SGBD MySQL instalado. Crie o banco de dados com os seguintes comandos: CREATEDATABASEProjetoPHP; USEProjetoPHP; CREATETABLEusuarios ( id INT(11) NOTNULLAUTO_INCREMENT, nomeVARCHAR(50), PRIMARYKEY (id) ); INSERTINTOusuarios (nome) VALUES ('PHP'), ('MySQL'), ('JasperReports'), ('PHPJasperXML'); Após criar nosso banco de dados, chamado ProjetoPHP, é o momento de elaborar o relatório. Para nosso exemplo, o relatório será chamado de phpjasperxml.jrxml. A conexão com o banco de dados que criamos deverá ser feita no iReport (esse processo é exemplificado em um link no texto introdutório do iReport, acima). Após criada a conexão, vamos inserir a seguinte query no Report Query do relatório (para ver como inserir queries no iReport, confiraaqui): SELECT * FROMusuarios; Esta query nos retornará dois fields (id e nome) que deverão estar no relatório. Finalizando nosso relatório, deverá ser inserido um parâmetro chamado descricao. Para saber como adicionar parâmetros em um relatório com o iReport, confira aqui. Depois de feito o download do PHPJasperXML, basta extrair a pasta class e o arquivo setting.php para a pasta de seu projeto. A figura abaixo mostra a elaboração deste relatório no iReport:
  • 3. Figura 1: Elaboração do relatório no iReport. Para nosso exemplo, o projeto será chamado relatorioPHP. No arquivo setting.php, você deve informar o caminho para seu banco de dados, como a seguir: <?php $server="localhost"; $db="phpjasperxml"; $user="root"; $pass="phpmaster"; $version="0.6d"; ?> A variável $version não precisa ser editada. Você pode criar um arquivo que irá instanciar a classe PHPJasperXML. Vamos chamar este arquivo de exemplo.php e seu conteúdo é descrito abaixo: <?php include_once('class/fpdf/FPDF.php'); include_once("class/PHPJasperXML.inc"); include_once ('setting.php'); $xml = simplexml_load_file("phpjasperxml.jrxml"); //informe onde está seu arquivo jrxml $PHPJasperXML = newPHPJasperXML(); $PHPJasperXML->debugsql=false;
  • 4. $descricao=$_GET["descricao"]; //recebendo o parâmetro descrição $PHPJasperXML->arrayParameter=array("descricao"=>$descricao); //passa o parâmetro cadastrado no iReport $PHPJasperXML->xml_dismantle($xml); $PHPJasperXML->connect($server,$user,$pass,$db); $PHPJasperXML->transferDBtoArray($server,$user,$pass,$db); $PHPJasperXML->outpage("I"); ?> Agora vamos testar nossa aplicação. Basta ir ao browser e digitarhttp://localhost/relatorioPHP/exemplo.php?descricao=HelloWord Se tudo ocorrer como o esperado, será exibido o relatório em PDF, de acordo com a figura 2: Figura 2: Relatório gerado O parâmetro é passado pelo método GET e tratado no nosso arquivo exemplo.php. Como este parâmetro já é esperado pelo relatório, definido em sua criação, é repassado pela classe PHPJasperXML ao nosso relatório. Uma observação é que no momento da elaboração do iReport, não se deve colocar nenhum objeto (Fields, parâmetros, Labels e etc) nas bandas Title e Column Header do relatório. Isso porque a classe PHPJasperXML não trata essas bandas e os objetos contidos nela simplesmente não são exibidos no relatório. Essa observação só vale caso você queira utilizar o iReport com a classe PHPJasperXML, que é o nosso caso. Nos relatórios gerados pelo iReport (e não
  • 5. pela classe PHPJapserXML), os elementos contidos nestas bandas são exibidos normalmente. Como foi dito, PHPJasperXML vem configurado para um conexão com MySQL. Para o que precisei foi necessário adaptar esta classe ao PostgreSQL. Meu amigo Ronaldo Meneguite disponibilizou em seu site, em artigo publicado também por ele, a classe modificada, que pode ser vista aqui. * Gostaria de agradecer à colega de trabalho, Jéssica Boalente Carvalho, pela ajuda na procura desta solução e na utilização da mesma. Ao amigo Ronaldo Louro Meneguite, por postar em seu site a classe PHPJasperXML que modifiquei aos moldes do PostgreSQL e pela troca de experiências sobre o assunto. Fonte.: http://imasters.com.br/artigo/15736/php/usando_o_ireport_como_gerador_de_relatorios_pa ra_php/