• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Aula 12   Relatório - Tabelas
 

Aula 12 Relatório - Tabelas

on

  • 1,311 views

 

Statistics

Views

Total Views
1,311
Views on SlideShare
1,311
Embed Views
0

Actions

Likes
0
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Aula 12   Relatório - Tabelas Aula 12 Relatório - Tabelas Presentation Transcript

    • 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
    • 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...
    • <?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();?>
    • 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
    • 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 );
    • 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();?>
    • <?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
    • 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.
    • 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";
    • 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();
    • 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();?>