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 cam...

Instalação do RVM no Ubuntu 12.10

Primeiro vamos instalar os pacotes build-essential e git-core:  $ sudo apt-get install build-essential git-core A instalação do RVM é feita utilizando CURL. Se você ainda não tem ele instalado instale-o: $ sudo apt-get install curl Para instalar a RVM use o comando abaixo: $  bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer) Agora precisamos adicionar uma linha ao arquivo bashrc para que o bash saiba aonde encontrar a RVM. Para isso execute o comando abaixo, mas certifique-se de substituir ‘fernando’ pelo seu nome de usuário. $ echo   '[[ -s "/home/andre/.rvm/scripts/rvm" ]] && source "/home/andre/.rvm/scripts/rvm"'  >> ~/.bashrc Agora execute:  $ source ~/.bashrc Podemos ver se a RVM está corretamente instalada através do comando:  $ type rvm | head -1 Agora precisamos ver os req...

Google +. Nova rede social do Google

A google anúnciou seu mais novo projeto. Uma nova rede social, chamada Google +. A mesma tem a pretensão de derrubar, nada mais nada menos que o Facebook. O projeto ainda está em fase de desenvolvimento e não está aberta a todos, porém algumas novidades já podem ser conferidas no link abaixo. http://www.google.com/intl/pt-BR/+/learnmore/index.html#circles Confiram!