Que tal cores?
Tá certo, vamos por algumas cores ali. O melhor jeito de fazer isso é usando arquivos CSS para informar qual é o layout do elemento. Se você não conhece o que é CSS, procure na rede, é fácil, é um modo de definir classes para uso no seu layout HTML, para dar uma resumida.O PHPReports permite que você use dois atributos para informar as classes CSS que você quer no seu relatório: TEXTCLASS, define o layout do elemento texto, e CELLCLASS, define o layout da célula da tabela (toda a página é uma tabela HTML, você notou?).
Para usar o CSS, primeiro, precisamos criar um arquivo CSS com as classes que queremos, e criar um elemento para informar o path do arquivo CSS. Então usamos os atributos TEXTCLASS e CELLCLASS em todos os elementos que precisamos (algumas vezes você não precisará do TEXTCLASS - você pode definir tudo o que você precisa no CELLCLASS). Vamos dar uma olhada no arquivo sales3.xml (note a segunda linha, estou usando agora a instrução DTD):
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE REPORT SYSTEM "PHPReport.dtd"> <REPORT> <TITLE>Sales Report</TITLE> <BACKGROUND_COLOR>#FFFFFF</BACKGROUND_COLOR> <CSS>phpreports.css</CSS> <PAGE BORDER="1" SIZE="25" CELLSPACING="0" CELLPADDING="5" WIDTH="500"> <HEADER> <ROW> <COL COLSPAN="5" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD">John Doe Enterprises</COL> </ROW> <ROW> <COL COLSPAN="5" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD">Sales Report</COL> </ROW> </HEADER> <FOOTER> <ROW> <COL ALIGN="RIGHT" COLSPAN="4" CELLCLASS="PAGE_LAYER">page total</COL> <COL ALIGN="LEFT" NUMBERFORMATEX="2" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD" TYPE="EXPRESSION">$this->getSum("value")</COL> </ROW> </FOOTER> </PAGE> <GROUPS> <GROUP NAME="maingroup"> <FIELDS> <ROW> <COL TYPE="FIELD" CELLCLASS="GROUP_LAYER">id</COL> <COL TYPE="FIELD" CELLCLASS="GROUP_LAYER">name</COL> <COL TYPE="FIELD" CELLCLASS="GROUP_LAYER">city</COL> <COL TYPE="FIELD" CELLCLASS="GROUP_LAYER">product</COL> <COL TYPE="FIELD" CELLCLASS="GROUP_LAYER">value</COL> </ROW> </FIELDS> </GROUP> </GROUPS> </REPORT>Aqui podemos conversar sobre um novo recurso na versão 0.0.9: o arquivo PHPReportPreview.php, onde você pode ter um preview de como seu relatório vai ficar *antes* de rodar ele com dados. Isso pode economizar algum tempo, algumas vezes sua consulta ao banco de dados pode ser demorada, então você pode fazer algumas mudanças e correções antes.
Para usá-lo você precisa apontar seu navegador para onde o PHPReportPreview.php está e usar um parâmetro chamado xml com o caminho completo do seu layout XML do relatório, assim:
http://localhost/phpreports/PHPReportPreview.php?xml=sales3.xmlVocê *deve* rodar o PHPReportPreview.php no mesmo diretório onde está o PHPReportPreview.xsl, mas isso pode ser alterado facilmente no arquivo PHPReportPreview.php. Facinho!
O preview vai se parecer com isso:
O relatório com os dados vai se parecer com isso:
Agora você me pergunta "e se eu quiser fazer linhas pares de ímpares serem diferentes? Isso pode me ajudar a visualizar um monte de dados!" ... ok, tem dois parâmetros que fazem isso. Use CELLCLASSEVEN (par) e CELLCLASSODD (ímpar! ganhei!) do jeito que estão em sales3b.xml (mas é importante dizer que você tem que usar ambos os parâmetros e quando os usar não pode usar o parâmetro CELLCLASS):
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE REPORT SYSTEM "PHPReport.dtd"> <REPORT> <TITLE>Sales Report</TITLE> <BACKGROUND_COLOR>#FFFFFF</BACKGROUND_COLOR> <CSS>phpreports.css</CSS> <PAGE BORDER="1" SIZE="25" CELLSPACING="0" CELLPADDING="5" WIDTH="500"> <HEADER> <ROW> <COL COLSPAN="5" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD">John Doe Enterprises</COL> </ROW> <ROW> <COL COLSPAN="5" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD">Sales Report</COL> </ROW> </HEADER> <FOOTER> <ROW> <COL ALIGN="RIGHT" COLSPAN="4" CELLCLASS="PAGE_LAYER">page total</COL> <COL ALIGN="LEFT" NUMBERFORMATEX="2" CELLCLASS="PAGE_LAYER" TEXTCLASS="BOLD" TYPE="EXPRESSION">$this->getSum("value")</COL> </ROW> </FOOTER> </PAGE> <GROUPS> <GROUP NAME="maingroup"> <FIELDS> <ROW> <COL TYPE="FIELD" CELLCLASSEVEN="GROUP_LAYER" CELLCLASSODD="YELLOW_ROW">id</COL> <COL TYPE="FIELD" CELLCLASSEVEN="GROUP_LAYER" CELLCLASSODD="YELLOW_ROW">name</COL> <COL TYPE="FIELD" CELLCLASSEVEN="GROUP_LAYER" CELLCLASSODD="YELLOW_ROW">city</COL> <COL TYPE="FIELD" CELLCLASSEVEN="GROUP_LAYER" CELLCLASSODD="YELLOW_ROW">product</COL> <COL TYPE="FIELD" CELLCLASSEVEN="GROUP_LAYER" CELLCLASSODD="YELLOW_ROW">value</COL> </ROW> </FIELDS> </GROUP> </GROUPS> </REPORT>E temos:
E olha as cores aí!!! :-)