# ENUM Werte aus MySQL auslesen?



## Romsl (7. September 2004)

Hi,

ist es in Java und MySQL möglich erlaubte Werte aus einer ENUM Vorgabe auszulesen?

Danke


----------



## ManicMarble (7. September 2004)

Hallo,
das ist sicher auch in Java möglich, hab' ich selbst aber noch nicht gemacht. In PHP habe ich mir dafür mal folgende Funktion gebastelt:

```
// Liefert die Elemente eines SET- oder ENUM-Feldes
// als Array oder als getrennte Liste
function bls_enumSetDefs($tbl, $fld, $returnType = "Array") {
	
	global $con;
		
	$it  = "SHOW COLUMNS FROM $tbl LIKE '$fld'";
	$rst = mysql_query($it, $con) or die("FEHLER in dbBasics/bls_enumSetDefs:\n$it");
	$it  = mysql_fetch_array($rst, MYSQL_ASSOC) or die("FEHLER in dbBasics/bls_enumSetDefs:\n$it");
	$it = $it["Type"];
	mysql_free_result($rst);
	
	$rst = explode(",", $it);
	while ($elem = each($rst)) {
		$rst[$elem[0]] = str_replace("set('", "", $rst[$elem[0]]);
		$rst[$elem[0]] = str_replace("enum('", "", $rst[$elem[0]]);
		$rst[$elem[0]] = str_replace("')", "", $rst[$elem[0]]);
		$rst[$elem[0]] = str_replace("'", "", $rst[$elem[0]]);
	}
	
	if ($returnType == "Array") {
		return $rst;
	} else {
		return implode($returnType, $rst);
	}
}
```
Ich erhebe allerdings keinen Anspruch darauf, dass das die einzige, einfachste oder performanteste Lösung ist. Das müsste sich jedenfalls vom Ansatz her in Java übertragen lassen.

Hoffe ein bischen geholfen zu haben,
Martin


----------



## lajos (22. September 2004)

so ähnlich mach ich das auch.

hier mal meine lösung


```
// Funktion zum ausgeben der ENUM-Values 
function  enum_values($tabelle,$spalte, $type="arr") {
	global $dbLink;
	$Query = "show columns from $tabelle like '$spalte'";
		
	if (! ($dbResult=mysql_query ($Query,$dbLink))) { 
    	// Abfrage kann nicht ausgeführt werden
    	print ("Fehler beim Abfragen der Tabelle!<br />\n");
    	print ("MySQL meldet: " . mysql_error() . "<br />\n");
    	exit;
  		}
		
	
	// Enum Values holen
	$row = mysql_fetch_row($dbResult);
	$enum = $row[1];
	
	// Speicher freigeben
	@mysql_free_result($dbResult);
	
	// nichtbenötigte zeichen abschneiden
	$enum = strcut($enum, 6, 2);
	
	// Array oder String?
	($type=="arr") ? $indies = explode ("','", $enum) : $indies = $enum;
	return $indies;
}


// ich benutze hier noch die funktion strcut, die schneidet 
// vorne und hinten vom string ab, kann sein, das es sowas in php
// schon gibt, bin noch nicht solange dabei 

function strcut($str,$vorne,$hinten) {
	$laenge = strlen ($str);
	$str = substr ($str, $vorne, $laenge-($vorne+$hinten));
	return $str;
}
```


----------

