Archief - PHP/MYSQL : Enum van veld in select form

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

verdeye

Legacy Member
hallow,

ik ben er al even op aan het zoeken, (google etc) maar ik vind nergens een juiste oplossing.

Ik heb een tabel gemaakt, waarbij één van de velden opgesteld is als type enumeratie. Nu zou ik het mogelijk willen maken dat ik deze enumeraties kan ophalen en zo in een select kan zetten in een form, zodanig waneer ik dit veld update met nieuwe of andere enumeraties dat deze ook automatisch zich aanpassen.
Mogelijk ? of totaal overbodig ?

jow

xml

Legacy Member
Ik weet niet of het hiermee gaat, maar controleer de standaard mysql functies eens;

http://be.php.net/manual/en/function.mysql-field-flags.php
--> Kijk vooral naar de user comments. ;)

Edit: uit de comments op die pagina:
PHP:
 function mysql_enum_values($table, $field)
{
    $sql = "SHOW COLUMNS FROM $table LIKE '$field'";
    $sql_res = mysql_query($sql)
	    or die("Could not query:\n$sql");
    $row = mysql_fetch_assoc($sql_res);
    mysql_free_result($sql_res);
    return(explode("','",
	    preg_replace("/.*\('(.*)'\)/", "\\1",
		    $row["Type"])));
}

Edit 2: nog wat verder gekeken op php.net, nog een andere oplossing:
PHP:
 #Input: the table name and the enum field
#Output: an array that stores all options of the enum field or 
#false if the input field is not an enum
function getEnumOptions($table, $field) {
   $finalResult = array();

   if (strlen(trim($table)) < 1) return false;
   $query  = "show columns from $table";
   $result = mysql_query($query);
   while ($row = mysql_fetch_array($result)){
        if ($field != $row["Field"]) continue;
        //check if enum type
        if (ereg('enum.(.*).', $row['Type'], $match)) {
            $opts = explode(',', $match[1]);
            foreach ($opts as $item)
                $finalResult[] = substr($item, 1, strlen($item)-2);
        }
        else
                return false;
   }
   return $finalResult;
}
Van: http://be.php.net/manual/en/function.mysql-fetch-field.php
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan