Pular para o conteúdo principal

Listar valores possiveis de um campo tipo "enum" com PHP

Para quem não sabe o que é "tipo enum", ele é um dos tipos de dados existentes no MySQL onde você pré-define quais são os valores que poderão ser armazenados. Como exemplo poderíamos ter uma tabela chamada "disciplina" que contém um campo chamado "status" onde esse campo só aceita os valores 'aprovado' ou 'reprovado'. Para isso esse campo seria criado assim:


status enum('aprovado', 'reprovado');


Dessa forma ele aceitaria apenas um dos dois valores.


Em algumas situações é necessário saber, a partir do PHP, quais são esses valores possíveis para o campo, como por exemplo, para a criação de um formulário dinâmico. Para isso criei a função abaixo que recebe o nome da tabela e o campo enum e retorna um array com todos os valores possíveis para esse campo.

Veja:


//RECEBE O NOME DA TABELA E DO CAMPO ENUM E RETORNA SEUS VALORES POSSIVEIS
<?php
function get_valores_enum($tabela, $campo){    

   $query = "describe $tabela;";
   
   $conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);

  

   $result = $conn->query($query);
   $campos = array();
   
   $i = 0;
   while($registro = $result->fetch(PDO::FETCH_ASSOC)){
       $campos[$i]["campo"] = $registro['Field'];
       $campos[$i]["tipo"] = $registro['Type'];
       $i++;
   }
   
   $valores_explode = array();

   //Percorre os nomes e tipo de array até achar o campo passado e se ele for do tipo enum
   foreach($campos as $chave){
       $tipo = substr($chave["tipo"], 0, 4);
       
       if($chave["campo"] == $campo && $tipo == "enum"){
           
           $valores = substr($chave["tipo"], 5, -1);
           $valores_explode = explode(",", $valores);
                       
           $i = 0;
           
           $valores_possiveis = array();
           
           while(!is_null($valores_explode[$i])){
               $valores_possiveis[] = substr($valores_explode[$i], 1, -1);
               $i++;                
           }
           
           return $valores_possiveis;            
           
       }elseif($chave["campo"] == $campo && $tipo != "enum"){
           echo "O campo informado não é do tipo enum!";
           return(0);
       }
   }
   
   echo "Campo não encontrado!";
}
?>

Um exemplo de uso da função poderia ser:

<?php
     $valores_possiveis = get_valores_enum("disciplina", "status");
     //pegaria os valores possíveis para o campo "status" na tabela "disciplina"

     //Para ver o conteudo do array podemos usar
     print_r($valores_possiveis);
?>

É isso ae, qualquer dúvida deixe o seu comentário que assim que eu responderei assim que vê-lo!

Até a próxima!

Comentários

Postagens mais visitadas deste blog

Virtualizando Mikrotik Com VirtualBox

Este texto mostra um passo-a-passo para instalar o mikrotik em uma máquina virtual do VirtualBox, seja somente para testes ou para montar realmente um servidor para a rede. Antes de iniciarmos nossa aventura é interessante visitar o site do Mikrotik e baixar uma imagem ISO que é disponibilizada no site com uma licensa full durante 24h. Iremos utilizá-la para instalar o Mikrotik. Para tanto, vá até a página de download do Mikrotik (http://www.mikrotik.com/download.html), em “select system type” escolha a opção “Other X86 platform” e em “Select Software Type” escolha "stable". Depois basta clicar em “ISO image” e baixar o arquivo. 1 – Abra o Virtual Box e clique em “Novo” para que possamos criar uma nova máquina Virtual onde será instalado o mikrotik.     2 – Irá aparecer uma tela de boas vindas, basta clicar em próximo para ir à próxima fase:     3 – Na próxima tela é dada a opção de escolher o nome da máquina virtual, o S.O. e sua respectiva versão. No campo "nome&

Traits. Novo mecanismo para reuso de código inserido no PHP 5.4.

Traits é um mecanismo para o reuso de código em linguagens que não trabalham com herança multipla, como o PHP. Foram criadas para reduzir alguma limitações da "herança simples" possibilitando o desenvolvedor a reusar conjuntos de métodos livremente em suas classes independentemente da hirarquia a qual ela pertence. Uma Trait é similar a uma classe, mas possui apenas um grupo métodos e propriedades que serão usados pelas nossas classes. Não é possível instanciar uma Trait diretamente. ela é uma adição a herança tradicional e possibilita a "composição horizontal de comportamento", que é a aplicação de membros a uma classe sem o uso de herança. Vamos a um exemplo de uso: <? php trait HelloWorld {     public function sayHello() {         echo 'Hello World!';     } } class TheWorldIsNotEnough {     use HelloWorld; // Aqui estou dizendo que minha classe usará os métodos da Trait HelloWorld } $o = new TheWorldIsNotEnough(); $o->sayHello(); ?

Gerando Planilha xls com o PHP

Neste post falo sobre este recurso que pode ser bastante útil dentro de um ambiente corporativo, onde é necessário estar gerando determinados relatários. Bem, ontem tive um probleminha, me vi diante da necessidade de gerar uma planilha do excel e não fazia idéia de como poderia fazer isso. Depois de muito estudar e pesquisar percebi que, apesar de ser algo bem simples de implementar, muita gente tem dificuldade em aprender e muitos posts que encontrei por aí simplesmente não funciona. Existem algumas formas de gerar uma planilha usando PHP. Se você procurar na internet irá encontrar várias classes já prontinhas com várias funções para auxiliar na geração da planilha. O método que vou abordar aqui é o método mais simples, vamo criar tudo na "munheca". Por incrível que parecer o código é bastante simples, veja: <?php //primeiro precisamos acrescentar alguns cabeçalhos para que o arquivo que iremos exportar um arquivo xls header("Content-type: application/vnd.ms-