Como funciona
Primeiro você precisa de um computador rodando Apache e
PHP, compilado com as libs
Sablotron libs ou libxstl
para fazer as transformações XML/XSLT.
Eu rodo tudo isso no Linux, mas se você quiser usar em outros SOs é sua escolha. :-)
O que são esses coisas (classes PHP classes, arquivos XML, transformação XSL)?
Os arquivos do PHPReports são usados para transformar arquivos XML de layout de relatório em código PHP, usado por classes PHP pré-definidas para gerar seus relatório na janela do navegador.O pacote do PHPReports vem com duas dessas coisas:
- Arquivo de transformação XSL - é um arquivo usado para transformar seu layout XML do relatório em código PHP usado pelas classes PHP pré-definidas que vem com o pacote para gerar o relatório.
- Classes PHP - são classes usadas para processar o resultado da transformação XML feita acima.
Você vai precisar de algum entendimento de como o XML funciona, mas isso é muito simples, há bons tutoriais na rede.
O arquivo XML
A principal coisa a respeito do arquivo XML é baseada em três camadas (olhe as cores no exemplo):1 - A camada do relatório, é a camada mais externa do relatório. Ela manipula todos os valores processados no relatório como um todo. | |
2 - A camada da página manipula todos os valores da página corrente, zerando-os no final da página. | |
3 - A camada dos grupos manipula todos os valores no grupo corrente, zerando-os no final do grupo. |
Mas o que é um grupo? Um grupo é uma "quebra" no relatório baseada em alguma expressão que você tenha. Por exemplo, nesse tipo de relatório:
Empresas João Ninguém Relatório de vendas |
||||
cidade: | Sao Jose do Rio Preto, SP | |||
código | nome | produto | $ | |
00001 | Eustaquio Rangel | Livro - Linux Programming Guide | 25.00 | |
00002 | Ana Carolina | Livro - Photoshop 7.0 | 22.50 | |
total | 47.50 | |||
cidade: Sao Paulo, SP | ||||
código | nome | produto | $ | |
00003 | Andre Kada | CD - Kreator - Violent Revolutions | 15.00 | |
total | 15.00 | |||
total da página | 62.50 | |||
total do relatório | 62.50 |
Há um total para cada cidade, um total para a página corrente e um total para o relatório todo.
O PHPReports pode utilizar todos esses valores, com funções como SUM(), AVG(), MIN() e MAX().
O arquivo XML para o exemplo acima seria assim:
<REPORT>
<TITLE>Relatório de vendas</TITLE>
<BACKGROUND_COLOR>#FFFFFF</BACKGROUND_COLOR>
<CSS>johndoe.css</CSS>
<DOCUMENT>
<FOOTER>
<ROW>
<COL COLSPAN="3" TEXTCLASS="BOLD" ALIGN="RIGHT">total do relatório</COL>
<COL TYPE="EXPRESSION" TEXTCLASS="BOLD" ALIGN="RIGHT" NUMBERFORMATEX="2">$this->getSum( "VALUE" )</COL>
</ROW>
</FOOTER>
</DOCUMENT>
<PAGE>
<HEADER>
<ROW>
<COL COLSPAN="4" TEXTCLASS="BOLD">Empresas João Ninguém</COL>
</ROW>
<ROW>
<COL COLSPAN="4" TEXTCLASS="BOLD">Relatório de vendas</COL>
</ROW>
</HEADER>
<FOOTER>
<ROW>
<COL COLSPAN="3" TEXTCLASS="BOLD" ALIGN="RIGHT">total da página</COL>
<COL TYPE="EXPRESSION" TEXTCLASS="BOLD" ALIGN="RIGHT">$this->getSum( "VALUE" )</COL>
</ROW>
</FOOTER>
</PAGE>
<GROUPS>
<GROUP nome="cidadeBreak" EXPRESSION="cidade">
<HEADER>
<ROW>
<COL ALIGN="RIGHT">cidade:</COL>
<COL TYPE="EXPRESSION" COLSPAN="3" TEXTCLASS="BOLD">$this->getValue( "cidade" )</COL>
</ROW>
<ROW>
<COL>código</COL>
<COL>nome</COL>
<COL>produto</COL>
<COL>$</COL>
</ROW>
</HEADER>
<FOOTER>
<ROW>
<COL ALIGN="RIGHT">total</COL>
<COL TYPE="EXPRESSION" COLSPAN="3" TEXTCLASS="BOLD" ALIGN="RIGHT">$this->getSum( "VALUE" )</COL>
</ROW>
</FOOTER>
<FIELDS>
<ROW>
<COL TYPE="FIELD">ID</COL>
<COL TYPE="FIELD">nome</COL>
<COL TYPE="FIELD">produto</COL>
<COL TYPE="FIELD" ALIGN="RIGHT" NUMBERFORMATEX="2">VALUE</COL>
</ROW>
</FIELDS>
</GROUP>
</GROUPS>
</REPORT>
Não é tão difícil se você pensar no seu relatório como uma tabela HTML (para ser honesto, ELE É uma tabela HTML):
Empresas João Ninguém |
|||
Relatório de vendas | |||
cidade: | Sao Jose do Rio Preto, SP | ||
código | nome | produto | $ |
00001 | Eustaquio Rangel | Livro - Linux Programming Guide | 25.00 |
00001 | Eustaquio Rangel | Livro - Design Patterns | 35.00 |
00002 | Ana Carolina | Livro - Photoshop 7.0 | 22.50 |
total | 82.50 | ||
cidade: Sao Paulo, SP | |||
código | nome | produto | $ |
00003 | Andre Kada | CD - Kreator - Violent Revolutions | 15.00 |
total | 15.00 | ||
total da página | 97.50 | ||
total do relatório | 97.50 |
Viu como funciona? Dê uma olhada na similaridade de ROW (linha) e COL (coluna) com o TR e TD do HTML (é a mesma coisa!).
O jeito mais fácil de fazer seu relatório é pegar um pedaço de papel, desenhá-lo como uma tabela HTML (não, não vá direto para o computador para fazer isso, é melhor fazer antes em um pedaço de papel) e criar o arquivo XML. Não se esqueça que no exemplo acima não estou tratando ainda de consultas SQL e coisas do tipo.
O arquivo XSL
O que o arquivo XSL faz é pegar o seu layout de relatório XML e converter ele para o código PHP que vai utilizar as classes PHP pré-definidas do pacote. Você apenas precisa usar uma função (makeReport, definida no arquivo PHPReportMaker.php) or criar um objeto PHPReportMaker e chamar o método run dele. Transformações XSL é uma coisa legal para aprender, se você quiser saber mais sobre isso há sempre bons tutoriais na rede, por exemplo (para ambos XML e XSL) tem a turma da W3Schools que fazem um bom trabalho ensinando isso de graça.Há também um tutorial básico disso no meu site.
Dê uma olhada na seção de exemplos.