Pré-visualizando uma tabela do banco de dados com 3 linhas de código no CodeIgniter 2.0

Ademir Cristiano Gabardo em CodeIgniter PHP

Existe uma necessidade comum
durante o processo de desenvolvimento, que é pré-visualizar dados que venham de
um objeto ou array.

Podemos ter a necessidade de
inspecionar um retorno de uma função, uma lista, um retorno de uma consulta
ou até mesmo uma tabela do banco de dados, etc. Essa tarefa comum pode ser
efetuada dando um print_r() na variável desejada e um exit() caso seja
necessário parar a aplicação.

Outras vezes é interessante poder
formatar esse retorno em dados tabulares de modo prático para a visualização.

E já que o CodeIgniter nos provê
um classe para auxiliar na geração de tabelas HTML, decidi criar um pequeno
helper capaz de mostrar esses dados de modo mais organizado.

Acrescentando uma
função de pré-visualização simples, adicionando a tag <pre></pre> do
HTML e passando como parâmetro 0 ou 1 para controlar se a aplicação deve parar
depois de exibir as informações. Zero, ou omitindo o parâmetro não para, 1 para
parar.

Criei também duas funções simples
para gerar tabelas a partir de uma Array ou de um objeto com os respectivos
nomes arr_tabela() e obj_tabela().

O código-fonte do helper ficou o seguinte.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
function pre($var,$parar = null){
  echo "<hr><pre>";
  print_r($var);
  echo "</pre><hr>";   
  if($parar!=null)
    echo exit();
}

function obj_tabela($object,$parar = null){ 
  $CI = & get_instance();
  $CI->load->library('table');
  
  $arr = array();
  for ($i = 0; $i < count($object); $i++)
      $arr[] = get_object_vars($object[$i]);
  
  $CI->table->clear();
  echo $CI->table->generate($arr);
 
  if($parar!=null)
    echo exit();
}

function arr_tabela($arr,$parar = null){ 
  $CI = & get_instance();
  $CI->load->library('table');
  $CI->table->clear();
  echo $CI->table->generate($arr);
  if($parar!=null)
    echo exit();
}

Um exemplo de uso é para recuperar os
dados de uma tabela no do banco de dados, no controlador basta chamar da
seguinte forma:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {

    function __construct()
    {
        parent::__construct();
    }

    function index()
    {
    $this->load->helper('pre');
      $data['categorias']  = $this->db->get('categorias')->result();
        //$this->load->view('home',$data);
        pre($data['categorias']);
        //obj_tabela($data['categorias']);
    }
}

Note a facilidade em exibir os dados vindos da tabela categorias. Na
figura abaixo, temos a tabela do banco de dados.

Tabela do banco de dados

Na sequência, veja o resultado gerado pela função
obj_tabela();

Obj_tabela

E o mesmo objeto do banco de dados sendo
exibido pelo uso da função pre();

O mais simplificado possível, temos a
exibição de uma tabela ou view do nosso banco de dados com 3 linhas de código no
controller.

Espero que os benefícios oferecidos pelo CodeIgniter 2.0 ajudem vocês nesse processo. Em caso de dúvida ou até mesmo troca de ideia, não deixe de postar seus comentários abaixo.

Até a próxima!

Mensagem do anunciante:

Seu site em WordPress mais rápido em apenas um dia com o Apiki WP One Day Performance.

Ademir Cristiano Gabardo em CodeIgniter PHP

Comentários

Dê Sua Opinião

O seu endereço de email não será publicado Campos obrigatórios são marcados *

  1. Boa, Ademir!
    CI sempre agilizando nossa vida. Hehe

    Eu, normalmente, utilizo só o var_dump(); para ver o resultado de um função com bd. Mas, quando aparece a necessidade de ver como tabela, sua solução aparece perfeita. :-)

    Abração.

  2. Há + – 1 ano faço exatamente isso, a única diferença é o nome da função, que no meu caso chamei de ‘pretty’ (a ideia era ter um print readable mais bonitinho), e não criei um helper a mais, simplesmente adicionei ao helper typography.

  3. Olá Ademir, parabéns pelo POST.

    Atualmente estou atraz de um bom framework PHP, cinheci o CI e achei ele excelente. Eu gostaria de saber se o seu livro serviria também para aprendizado da versão 2.0 do CI.

    Abraço

    1. Olá Jarbas, o livro foi baseado na versão 1.7.3. Algumas coisas mudaram em relação ao 2.0, mas de modo geral, uma vez aprendido o conceito acredito que você não terá dificuldades para migrar para a nova versão, apenas aconselho que use a versão 1.7.3 para fazer os exemplos do livro. Com a versão 2.0 algumas coisas precisarão ser adaptadas para funcionar.

  4. Olá pessoal, ótimo post, mas tenho uma dúvida.

    Quando envio o objeto para a view recupero a ” array ” , e mostro esse resultado, mas eu quero mostrar além desse resultado as informações uqe ja coloquei na página. Por exemplo:
    function index()
    {
    $var = $this->db->get();
    $itens[‘dados’] = $var->row();
    $container = $itens[‘dados’];

    $this->load->view(‘touch_message’, $container);
    $this->load->view(‘touch_message’, $itens);
    }
    . Se eu chamar $this->load->view(‘touch_message’, $container);

    eu vejo os dados de:

    . Já se eu chamar: $this->load->view(‘touch_message’, $itens);

    eu vejo os dados de:

    Minha dúvida é:

    Como faço uma chamada que vejo todos os dados que já foram inseridos na página e ainda obter o auxilio da tabela que foi criada? Por que quando chamo um o outro não funciona e vice e versa.

leia mais
Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: