Seções iMasters
CodeIgniter + PHP

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

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:

Em apoio à evangelização do WordPress, os cursos da Apiki são gratuitos para que você possa se especializar na plataforma que mais cresce no mundo. Vagas limitadas, Inscreva-se agora.

Comente também

7 Comentários

Vinicius Depizzol

Vinicius Depizzol

Nilton Heck

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.

Eduardo Matos

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.

Ademir Cristiano Gabardo

:-) Obrigado pelos comentários. Espero que ajude o pessoal a tornar o desenvolvimento com o CI ainda mais facilitado.

Jarbas Santos

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

    Ademir Cristiano Gabardo

    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.

Paulino

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.

Qual a sua opinião?