Succede di dover lavorare con gli enum dei database in MySQL. Capita che questi valori debbano essere inseriti in un menu a tendina di un form.
La cosa più facile del mondo è utilizzare la funzione foreach di PHP che permette di elencare i valori dell’array e quindi avere un select dinamico che, al cambiare dell’array, aggiunge tutti i suoi valori al menù a tendina.
Capita anche che questi valori cambino nel tempo e quindi si devono cambiare i valori della tendina.
Dopo qualche tentativo ho creato una semplice funzione che, dati in pasto nome della tabella del database e il nome della colonna di tipo enum ecco che restituisce l’array dei valori possibile per quella colonna stessa.
Cominciamo dalla connessione al database:
<?php
$dbname = "nomedatabase";
$dbuser = "userdatabse";
$dbpssw = "passworddatabase";
$dbhost = "hostdatabase";
$dbconn = mysql_connect($dbhost, $dbuser, $dbpssw);
if ($dbconn == false) exit ("Errore nella connessione. Verificare i parametri nel file config.php");
if (mysql_select_db($dbname) == false) exit ("Errore nella selezione del database. Verificare i parametri nel file config.php");
?>
Quindi ecco la nostra funzione:
<?php
function enum2array($tab, $col, $dbconn){
$query = "SHOW COLUMNS FROM $tab LIKE '$col'";
$result = mysql_query($query, $dbconn);
$row = mysql_fetch_array($result);
$var = explode("','",substr($row['Type'],6,-2));
return $var;
}
$valori = enum2array('esperto', 'tipouser', $dbconn);
?>
E quindi stampiamo i possibili valori del nostro enum:
<?php print_r($valori); ?>
Fate attenzione al fatto che dovete passare alla funzione al il parametro della connessione al database.




















