SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
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.com

São Paulo, Novembro, 2011
Bibliotecas de Apoio - PEAR
Há 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 Table
http://dev.obliquid.com/docs/pear_table.html
Trabalhando com banco de dados

Criamos o banco de dados usuarios e a tabela pessoas abaixo para apoiar
os 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 paginados
O 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` FROM
pessoas 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();
?>

Mais conteúdo relacionado

Mais procurados

PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
 
Fundamentos de PHP, phpMyAdmin e MySQL (parte 1)
Fundamentos de  PHP, phpMyAdmin e MySQL (parte 1)Fundamentos de  PHP, phpMyAdmin e MySQL (parte 1)
Fundamentos de PHP, phpMyAdmin e MySQL (parte 1)Breno Vitorino
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesLuis Gustavo Almeida
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHPAugusto das Neves
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHPBreno Vitorino
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBCEduardo Mendes
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosCRISLANIO MACEDO
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanosnobios
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 
Menu dinâmico com kendoUI
Menu dinâmico com kendoUIMenu dinâmico com kendoUI
Menu dinâmico com kendoUIDouglas Lira
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIinfo_cimol
 
LabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - ArraysLabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - ArraysCarlos Santos
 
Apresentação j query6
Apresentação j query6Apresentação j query6
Apresentação j query6douglasgrava
 

Mais procurados (20)

PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
PHP e Mysql - DELETE
PHP e Mysql - DELETEPHP e Mysql - DELETE
PHP e Mysql - DELETE
 
PHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object CalisthenicsPHP para Adultos: Clean Code e Object Calisthenics
PHP para Adultos: Clean Code e Object Calisthenics
 
Fundamentos de PHP, phpMyAdmin e MySQL (parte 1)
Fundamentos de  PHP, phpMyAdmin e MySQL (parte 1)Fundamentos de  PHP, phpMyAdmin e MySQL (parte 1)
Fundamentos de PHP, phpMyAdmin e MySQL (parte 1)
 
Geolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e RoutesGeolocalização em PHP - Google Places, Maps e Routes
Geolocalização em PHP - Google Places, Maps e Routes
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHP
 
Acesso a banco de dados com JDBC
Acesso a banco de dados com JDBCAcesso a banco de dados com JDBC
Acesso a banco de dados com JDBC
 
PHP 5.3 - Arrays
PHP 5.3 - ArraysPHP 5.3 - Arrays
PHP 5.3 - Arrays
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivos
 
J query javascript para seres humanos
J query   javascript para seres humanosJ query   javascript para seres humanos
J query javascript para seres humanos
 
PHP MySQL Aula 07
PHP MySQL Aula 07PHP MySQL Aula 07
PHP MySQL Aula 07
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0
 
Menu dinâmico com kendoUI
Menu dinâmico com kendoUIMenu dinâmico com kendoUI
Menu dinâmico com kendoUI
 
Arrays PHP - Criação de sites II
Arrays PHP - Criação de sites IIArrays PHP - Criação de sites II
Arrays PHP - Criação de sites II
 
LabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - ArraysLabMM4 (T14 - 12/13) - Arrays
LabMM4 (T14 - 12/13) - Arrays
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
Apresentação j query6
Apresentação j query6Apresentação j query6
Apresentação j query6
 

Destaque

Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpbrunocf007
 
Criança, mídia e consumo na formação de professores
Criança, mídia e consumo na formação de professoresCriança, mídia e consumo na formação de professores
Criança, mídia e consumo na formação de professoresDalton Martins
 
Novos caminhos da inclusão digital: experiências do projeto +Telecentros
Novos caminhos da inclusão digital: experiências do projeto +TelecentrosNovos caminhos da inclusão digital: experiências do projeto +Telecentros
Novos caminhos da inclusão digital: experiências do projeto +TelecentrosDalton Martins
 
In search of a model of human dynamics analysis applied to social sciences
In search of a model of human dynamics analysis applied to social sciencesIn search of a model of human dynamics analysis applied to social sciences
In search of a model of human dynamics analysis applied to social sciencesDalton Martins
 
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...Dalton Martins
 
Processos colaborativos de produção de ontologias - I Fórum Nacional de Sist...
Processos colaborativos de produção de ontologias  - I Fórum Nacional de Sist...Processos colaborativos de produção de ontologias  - I Fórum Nacional de Sist...
Processos colaborativos de produção de ontologias - I Fórum Nacional de Sist...Dalton Martins
 
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...Do documento às ontologias: uma visão sobre sistemas de organização do conhec...
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...Dalton Martins
 
Digitalização da cultura brasileira - as motivações do projeto Tainacan
Digitalização da cultura brasileira - as motivações do projeto TainacanDigitalização da cultura brasileira - as motivações do projeto Tainacan
Digitalização da cultura brasileira - as motivações do projeto TainacanDalton Martins
 
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...Dalton Martins
 

Destaque (9)

Usando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para phpUsando o i report como gerador de relatórios para php
Usando o i report como gerador de relatórios para php
 
Criança, mídia e consumo na formação de professores
Criança, mídia e consumo na formação de professoresCriança, mídia e consumo na formação de professores
Criança, mídia e consumo na formação de professores
 
Novos caminhos da inclusão digital: experiências do projeto +Telecentros
Novos caminhos da inclusão digital: experiências do projeto +TelecentrosNovos caminhos da inclusão digital: experiências do projeto +Telecentros
Novos caminhos da inclusão digital: experiências do projeto +Telecentros
 
In search of a model of human dynamics analysis applied to social sciences
In search of a model of human dynamics analysis applied to social sciencesIn search of a model of human dynamics analysis applied to social sciences
In search of a model of human dynamics analysis applied to social sciences
 
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...
Jornalismo de Dados - Fontes de Informação para produção de Mapas Informacion...
 
Processos colaborativos de produção de ontologias - I Fórum Nacional de Sist...
Processos colaborativos de produção de ontologias  - I Fórum Nacional de Sist...Processos colaborativos de produção de ontologias  - I Fórum Nacional de Sist...
Processos colaborativos de produção de ontologias - I Fórum Nacional de Sist...
 
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...Do documento às ontologias: uma visão sobre sistemas de organização do conhec...
Do documento às ontologias: uma visão sobre sistemas de organização do conhec...
 
Digitalização da cultura brasileira - as motivações do projeto Tainacan
Digitalização da cultura brasileira - as motivações do projeto TainacanDigitalização da cultura brasileira - as motivações do projeto Tainacan
Digitalização da cultura brasileira - as motivações do projeto Tainacan
 
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...
Análise de Redes Sociais para educação à distância na plataforma ELGG para o ...
 

Semelhante a Relatório paginado de clientes

Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebDalton Martins
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Thyago Maia
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...Dalton Martins
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 
Aula 9 php (banco de dados)
Aula 9   php (banco de dados)Aula 9   php (banco de dados)
Aula 9 php (banco de dados)andreluizlc
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated QueryDalton Valadares
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 
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
 

Semelhante a Relatório paginado de clientes (20)

Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Sistema php
Sistema phpSistema php
Sistema php
 
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
 
Crud
CrudCrud
Crud
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
Bread board
Bread boardBread board
Bread board
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
 
Tutorial.yii
Tutorial.yiiTutorial.yii
Tutorial.yii
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Aula 9 php (banco de dados)
Aula 9   php (banco de dados)Aula 9   php (banco de dados)
Aula 9 php (banco de dados)
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
LINQ - Language Integrated Query
LINQ - Language Integrated QueryLINQ - Language Integrated Query
LINQ - Language Integrated Query
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
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
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
PHP GERAL
PHP GERALPHP GERAL
PHP GERAL
 

Mais de Dalton Martins

Computação cognitiva e políticas culturais
Computação cognitiva e políticas culturaisComputação cognitiva e políticas culturais
Computação cognitiva e políticas culturaisDalton Martins
 
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...Dalton Martins
 
Cultura digital, museus e acervos em rede
Cultura digital, museus e acervos em redeCultura digital, museus e acervos em rede
Cultura digital, museus e acervos em redeDalton Martins
 
Aula 01 introdução e conceitos básicos sobre gestão
Aula 01   introdução e conceitos básicos sobre gestãoAula 01   introdução e conceitos básicos sobre gestão
Aula 01 introdução e conceitos básicos sobre gestãoDalton Martins
 
Apresentação Semana de Humanização da Saúde: uma visão quantitativa
Apresentação Semana de Humanização da Saúde: uma visão quantitativaApresentação Semana de Humanização da Saúde: uma visão quantitativa
Apresentação Semana de Humanização da Saúde: uma visão quantitativaDalton Martins
 
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...Dalton Martins
 
Design da Informação - Aula 03 - Princípios do design de informação
Design da Informação - Aula 03 - Princípios do design de informaçãoDesign da Informação - Aula 03 - Princípios do design de informação
Design da Informação - Aula 03 - Princípios do design de informaçãoDalton Martins
 
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativa
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativaAula 04 - Tópicos em Gestão da Informação Medidas de posição relativa
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativaDalton Martins
 
Aula 02 - Design da Informação - História e princípios do design de informação
Aula 02 - Design da Informação - História e princípios do design de informaçãoAula 02 - Design da Informação - História e princípios do design de informação
Aula 02 - Design da Informação - História e princípios do design de informaçãoDalton Martins
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesDalton Martins
 
Aula 02 - Estatística da vida cotidiana
Aula 02 - Estatística da vida cotidianaAula 02 - Estatística da vida cotidiana
Aula 02 - Estatística da vida cotidianaDalton Martins
 
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...Dalton Martins
 
Gestao da Informacao e Midias Sociais
Gestao da Informacao e Midias SociaisGestao da Informacao e Midias Sociais
Gestao da Informacao e Midias SociaisDalton Martins
 
Estudos comparativos entre redes
Estudos comparativos entre redesEstudos comparativos entre redes
Estudos comparativos entre redesDalton Martins
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte IIDalton Martins
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte IDalton Martins
 
Introdução à Análise de redes: aspectos conceituais fundamentais para o analista
Introdução à Análise de redes: aspectos conceituais fundamentais para o analistaIntrodução à Análise de redes: aspectos conceituais fundamentais para o analista
Introdução à Análise de redes: aspectos conceituais fundamentais para o analistaDalton Martins
 
Redes e transversalidade de políticas públicas - Aula Fiocruz
Redes e transversalidade de políticas públicas - Aula FiocruzRedes e transversalidade de políticas públicas - Aula Fiocruz
Redes e transversalidade de políticas públicas - Aula FiocruzDalton Martins
 
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...Dalton Martins
 
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...Dalton Martins
 

Mais de Dalton Martins (20)

Computação cognitiva e políticas culturais
Computação cognitiva e políticas culturaisComputação cognitiva e políticas culturais
Computação cognitiva e políticas culturais
 
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...
Humanidades digitais e ciência de dados: novos métodos, perspectivas e desaf...
 
Cultura digital, museus e acervos em rede
Cultura digital, museus e acervos em redeCultura digital, museus e acervos em rede
Cultura digital, museus e acervos em rede
 
Aula 01 introdução e conceitos básicos sobre gestão
Aula 01   introdução e conceitos básicos sobre gestãoAula 01   introdução e conceitos básicos sobre gestão
Aula 01 introdução e conceitos básicos sobre gestão
 
Apresentação Semana de Humanização da Saúde: uma visão quantitativa
Apresentação Semana de Humanização da Saúde: uma visão quantitativaApresentação Semana de Humanização da Saúde: uma visão quantitativa
Apresentação Semana de Humanização da Saúde: uma visão quantitativa
 
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...
Design da Informação - Aula 04 - Imagens que informam - design, legendas e di...
 
Design da Informação - Aula 03 - Princípios do design de informação
Design da Informação - Aula 03 - Princípios do design de informaçãoDesign da Informação - Aula 03 - Princípios do design de informação
Design da Informação - Aula 03 - Princípios do design de informação
 
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativa
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativaAula 04 - Tópicos em Gestão da Informação Medidas de posição relativa
Aula 04 - Tópicos em Gestão da Informação Medidas de posição relativa
 
Aula 02 - Design da Informação - História e princípios do design de informação
Aula 02 - Design da Informação - História e princípios do design de informaçãoAula 02 - Design da Informação - História e princípios do design de informação
Aula 02 - Design da Informação - História e princípios do design de informação
 
Aula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrõesAula 03 - Identificando e tratando padrões
Aula 03 - Identificando e tratando padrões
 
Aula 02 - Estatística da vida cotidiana
Aula 02 - Estatística da vida cotidianaAula 02 - Estatística da vida cotidiana
Aula 02 - Estatística da vida cotidiana
 
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...
Tópicos em Gestão da Informação II - Aula 01 - Desafios atuais da Gestão da I...
 
Gestao da Informacao e Midias Sociais
Gestao da Informacao e Midias SociaisGestao da Informacao e Midias Sociais
Gestao da Informacao e Midias Sociais
 
Estudos comparativos entre redes
Estudos comparativos entre redesEstudos comparativos entre redes
Estudos comparativos entre redes
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte II
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte I
 
Introdução à Análise de redes: aspectos conceituais fundamentais para o analista
Introdução à Análise de redes: aspectos conceituais fundamentais para o analistaIntrodução à Análise de redes: aspectos conceituais fundamentais para o analista
Introdução à Análise de redes: aspectos conceituais fundamentais para o analista
 
Redes e transversalidade de políticas públicas - Aula Fiocruz
Redes e transversalidade de políticas públicas - Aula FiocruzRedes e transversalidade de políticas públicas - Aula Fiocruz
Redes e transversalidade de políticas públicas - Aula Fiocruz
 
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...
Análise de Redes Sociais: novas possibilidades de serviços e pesquisa para bi...
 
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...
Tese de doutorado - Dalton Lopes Martins - Análise de Redes Sociais de colabo...
 

Relatório paginado de clientes

  • 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.com São Paulo, Novembro, 2011
  • 2. Bibliotecas de Apoio - PEAR Há 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 Table http://dev.obliquid.com/docs/pear_table.html
  • 5. Trabalhando com banco de dados Criamos o banco de dados usuarios e a tabela pessoas abaixo para apoiar os 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 paginados O 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` FROM pessoas 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(); ?>