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:
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:
$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:
É isso ae, qualquer dúvida deixe o seu comentário que assim que eu responderei assim que vê-lo!
Até a próxima!
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){
<?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
Postar um comentário
Deixe aqui sua opinião ou dúvida: