Your SlideShare is downloading. ×
0
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Aula 12   Relatório - Tabelas
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Aula 12 Relatório - Tabelas

929

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
929
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
20
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Programação Web Fatec Ipiranga Análise e Desenvolvimento de Sistemas Aula 12 – Customização de relatórios – parte I (Tabelas) Dalton Martins dmartins@gmail.comSão Paulo, Novembro, 2011
  • 2. Bibliotecas de Apoio - PEARHá um conjunto de bibliotecas chamado PEAR (PHP extension and application repository) que são muito úteis na extensão das funcionalidades nativas do PHP;O repositório é disponível online: http://pear.php.net/São mais de 550 pacotes representando funcionalidades em mais de 37 áreas diferentes;Normalmente, esse conjunto de bibliotecas já vem instalado com o XAMPP, no diretório phpPEAR...
  • 3. <?php // Inclui a biblioteca de tratamento de tabelas require_once "HTML/Table.php"; // monta os dados no vetor $dados = array( 0 => array("12309","45633","2010-12-19 01:13:42","$22.04","$5.67","$27.71"), 1 => array("12310","942","2010-12-19 01:15:12","$11.50","$3.40","$14.90"), 2 => array("12311","7879","2010-12-19 01:15:22","$95.99","$15.00","$110.99"), 3 => array("12312","55521","2010-12-19 01:30:45","$10.75","$3.00","$13.75") ); // Cria um vetor com os atributos da tabela $atributos = array(border => 1); // Cria o objeto tabela $tabela = new HTML_Table($atributos); Criando uma // configura os cabeçalhos $tabela->setHeaderContents(0, 0, "Pedido"); tabela simples $tabela->setHeaderContents(0, 1, "Cliente"); $tabela->setHeaderContents(0, 2, "Data do pedido"); $tabela->setHeaderContents(0, 3, "Sub Total"); $tabela->setHeaderContents(0, 4, "Custo de envio"); $tabela->setHeaderContents(0, 5, "Custo total"); // Itera pelo vetor de dados para produzir as linhas da tabela for($linhanum = 0; $linhanum < count($dados); $linhanum++) { for($colnum = 0; $colnum < 6; $colnum++) { $tabela->setCellContents($linhanum+1, $colnum, $dados[$linhanum][$colnum]); } } // exibe os dados na tela echo $tabela->toHTML();?>
  • 4. Melhorando a visibilidade dos resultados // Itera pelo vetor de dados para produzir as linhas da tabela for($linhanum = 0; $linhanum < count($dados); $linhanum++) { for($colnum = 0; $colnum < 6; $colnum++) { $tabela->setCellContents($linhanum+1, $colnum, $dados[$linhanum][$colnum]); } } $tabela->altRowAttributes(1,"bgcolor=#CCC99"); // exibe os dados na tela echo $tabela->toHTML();Obs.: tutorial de outras opções sobre como usar a biblioteca Tablehttp://dev.obliquid.com/docs/pear_table.html
  • 5. Trabalhando com banco de dadosCriamos o banco de dados usuarios e a tabela pessoas abaixo para apoiaros próximos passos que veremos... CREATE TABLE `usuarios`.`pessoas` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nome` VARCHAR( 30 ) NOT NULL );
  • 6. Tabela simples a partir do banco<?php require_once "HTML/Table.php"; $mysqli = new mysqli("localhost", "root", "", "usuarios"); $attributes = array(border => 1); $table = new HTML_Table($attributes); $table->setHeaderContents(0, 0, "ID"); $table->setHeaderContents(0, 1, "Pessoas"); $query = "SELECT id AS `Numero de chamada`, nome AS `Nome completo` FROM pessoas ORDER BY id"; $stmt = $mysqli->prepare($query); $stmt->execute(); $stmt->bind_result($ID, $nomeID); $rownum = 1; while ($stmt->fetch()) { $table->setCellContents($rownum, 0, $ID); $table->setCellContents($rownum, 1, $nomeID); $rownum++; } echo $table->toHTML(); $mysqli->close();?>
  • 7. <?php require_once "HTML/Table.php"; $mysqli = new mysqli("localhost", "root", "", "usuarios"); $attributes = array(border => 1); $table = new HTML_Table($attributes); // Montando os cabeçalhos das colunas linkáveis utilizando o método GET do HTTP! $IDcoluna = "<a href=".$_SERVER[PHP_SELF]."?campo=id>ID</a>"; $nomeIDcoluna = "<a href=".$_SERVER[PHP_SELF]."?campo=nome>Pessoas</a>"; $table->setHeaderContents(0, 0, $IDcoluna); $table->setHeaderContents(0, 1, $nomeIDcoluna); // selecionando o campo de indexação conforme o retorno do método GET $campo = (isset($_GET[campo])) ? $_GET[campo] : "id";$query = "SELECT id AS `Numero de chamada`, nome AS `Nome completo` FROM pessoas ORDER BY ".$campo." ASC"; $stmt = $mysqli->prepare($query); $stmt->execute(); $stmt->bind_result($ID,$nomeID); $rownum = 1; while ($stmt->fetch()) { $table->setCellContents($rownum, 0, $ID); $table->setCellContents($rownum, 1, $nomeID); Ordenando o } $rownum++; relatório pelas?> echo $table->toHTML(); $mysqli->close(); colunas
  • 8. Criando relatórios paginadosO MySQL possui uma cláusula LIMIT, que permite extrairmos dados limitados por um valor de linha inicial e o número de linhas a partir desse valor que deve ser extraído.Exemplo: SELECT nome FROM pessoas ORDER BY nome ASC LIMIT 0,2;recupera apenas as duas primeiras linhas.Para utilizarmos na criação de relatórios, precisamos determinar 3 variáveis: – Número de linhas por página; – Faixa de linhas a extrair do banco; – Número de linhas totais de resultado.
  • 9. Criando relatórios paginados - (i)<?php require_once "HTML/Table.php"; $mysqli = new mysqli("localhost", "root", "Dm%512p", "usuarios"); $tamanhodapagina=2; $registroinicial = (int) $_GET[registroinicial]; $registroinicial = (isset($_GET[registroinicial])) ? $registroinicial : 0; $attributes = array(border => 1); $table = new HTML_Table($attributes); // Montando os cabeçalhos das colunas linkáveis utilizando o método GET do HTTP! $IDcoluna = "<a href=".$_SERVER[PHP_SELF]."?campo=id>ID</a>"; $nomeIDcoluna = "<a href=".$_SERVER[PHP_SELF]."?campo=nome>Pessoas</a>"; $table->setHeaderContents(0, 0, $IDcoluna); $table->setHeaderContents(0, 1, $nomeIDcoluna); // selecionando o campo de indexação conforme o retorno do método GET $campo = (isset($_GET[campo])) ? $_GET[campo] : "id";
  • 10. Criando relatórios paginados - (ii)// seleciona o número total de registros na tabela $resultado = $mysqli->query("SELECT count(id) AS id FROM pessoas"); list($totalregistros)=$resultado->fetch_row(); $query = "SELECT id AS `Numero de chamada`, nome AS `Nome completo` FROMpessoas ORDER BY ".$campo." ASC LIMIT ".$registroinicial.",".$tamanhodapagina; $stmt = $mysqli->prepare($query); $stmt->execute(); $stmt->bind_result($ID,$nomeID); $rownum = 1; while ($stmt->fetch()) { $table->setCellContents($rownum, 0, $ID); $table->setCellContents($rownum, 1, $nomeID); $rownum++; } echo $table->toHTML();
  • 11. Criando relatórios paginados - (iii) // cria o link de anterior if ($registroinicial > 0) { $prev = $registroinicial - $tamanhodapagina; $url = $_SERVER[PHP_SELF]."?registroinicial=$prev"; printf("<a href=%s> Pagina anterior </a>",$url); } // cria o link posterior if ($totalregistros > ($registroinicial + $tamanhodapagina)) { $next = $registroinicial+$tamanhodapagina; $url = $_SERVER[PHP_SELF]."?registroinicial=$next"; printf("<a href=%s> Pagina posterior </a>",$url); } $mysqli->close();?>

×