Back-End

10 fev, 2011

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

Publicidade

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!