Enum Werte auslesen
Steven Binder
- php
0 romy0 Steven Binder0 romy
Hallo,
sorry das ich jetzt neues thema verfasse aber ich hab meinen alten Beitrag im Archiv nicht mehr gefunden sondern nur ganz viele leere beiträge ?!
Also nochmal mein Problem:
ich will aus einer MySQL Datenbank die Werte die in einer Enum spalte sind auslesen ...
also nicht der Inhalt sonder z.b.
enum('ja','nein')
jetzt müßte ich eben dieses "ja" und "nein" auslesen.
Das ist bei 2 Werten auch kein Problem. Aber wenn ich nun 3 Werte drin hab liest er den 3ten Wert nicht aus.
Kann es sein das enum nur 2 Werte annehmen kann ?
Mein Quelltext bis jetzt:
$sql_show = "SHOW FIELDS FROM $value";
$result_show = mysql_query($sql_show, $conn);
while ($row_table_def = mysql_fetch_array($result_show)){
$enum = explode('(',$row_table_def['Type']);
if($enum[0] == 'enum'){
echo $row_table_def['Type'];
$enum = str_replace('enum(', '', $row_table_def['Type']);
$enum = ereg_replace('\)$', '', $enum);
$enum = explode('','', substr($enum, 1, -1)); $enum_cnt = count($enum); //zähle wie viele es sind
echo "<select name="$auswahl">\n";
$j = 0; // wie oft er die Schleife durchlaufen soll
$k = 0; // Damit er array[1] als zweites nimmt und nicht nur [0]
while($j <= $enum_cnt){
if($elem == $enum[$k]){ $selected = "selected"; } else { $selected = ""; }
echo "<option $selected value="$enum[$k]">$enum[$k]</option>\n";
$j++;
$k++;
}
echo "</select>\n";
break;
}
}
Wäre cool wenn jemand antworten würde ;)) ...
Danke im voraus
Gruß Steven
Hallo,
enum('ja','nein')
jetzt müßte ich eben dieses "ja" und "nein" auslesen.
Das ist bei 2 Werten auch kein Problem. Aber wenn ich nun 3 Werte drin hab liest er den 3ten Wert nicht aus.
Kann es sein das enum nur 2 Werte annehmen kann ?
nein, enum kann endlich viele Werte annehmen
Mein Quelltext bis jetzt:
$sql_show = "SHOW FIELDS FROM $value";
$result_show = mysql_query($sql_show, $conn);
while ($row_table_def = mysql_fetch_array($result_show)){
$enum = explode('(',$row_table_def['Type']);
if($enum[0] == 'enum'){
echo $row_table_def['Type'];
$enum = str_replace('enum(', '', $row_table_def['Type']);
$enum = ereg_replace('\)$', '', $enum);
$enum = explode('','', substr($enum, 1, -1));
$enum_cnt = count($enum); //zähle wie viele es sind
mach hier mal echo $enum_cnt;
echo "<select name="$auswahl">\n";
$j = 0; // wie oft er die Schleife durchlaufen soll
$k = 0; // Damit er array[1] als zweites nimmt und nicht nur [0]
das verstehe ich nicht, du könntest alle k durch j ersetzen, da du mit k nichts anders machst, k hat bei dir immer denselben wert wie j
while($j <= $enum_cnt){
das Gleichzeichen kann weg, sonst läuft es einmal zu viel durch
if($elem == $enum[$k]){ $selected = "selected"; } else { $selected = ""; }
echo "<option $selected value="$enum[$k]">$enum[$k]</option>\n";
$j++;
$k++;
}
echo "</select>\n";
break;
}
}Wäre cool wenn jemand antworten würde ;)) ...
gibt das count mal aus und sag was drinsteht, ansonsten bin ich entweder auch Blind oder seh erstmal kein fehler
poste auch mal, was in dem enumdatenbankfeld drinsteht und was du zum schluss angezeigt bekommst!
Danke im voraus
Gruß Steven
if($enum[0] == 'enum'){
echo $row_table_def['Type'];
da bekomm ich :
bigint(255)texttexttextenum('nein','ja')
Was ja schon falsch ist da fehlt eigentlich noch ",'url'"
und bei count bekomm ich eine 2 ;((
in der DB steht "enum('ja','nein','url')" drin.
ja ich bin auch schon am verzweifel weil er ja die ersten 2 super ausgibt.
if($enum[0] == 'enum'){
echo $row_table_def['Type'];da bekomm ich :
bigint(255)texttexttextenum('nein','ja')
Was ja schon falsch ist da fehlt eigentlich noch ",'url'"
und bei count bekomm ich eine 2 ;((
übrigens habe ich gerade herausgefunden, das über 65000 values in das enum hineinkönnen
in der DB steht "enum('ja','nein','url')" drin.
ja ich bin auch schon am verzweifel weil er ja die ersten 2 super ausgibt.
$sql = "show columns from TABLENAME like 'ENUM_COLUMN_NAME'";
$conn = $this->CONN;
$result = mysql_query($sql,$conn);
$thisrow = mysql_fetch_array($result);
$valuestring = $thisrow[1];
$valuestring = ereg_replace("enum", "", $valuestring);
$valuestring = ereg_replace("(", "", $valuestring);
$valuestring = ereg_replace(")", "", $valuestring);
$valuestring = ereg_replace("'", "", $valuestring);
$values = split(",", $valuestring);
also ich weiss auch nicht mehr was man da tun könnte, probier doch mal das aus, ansonsten... sorry
hm na dann mal danke ;)
wenigstens sagt mir das das ich nicht ganz blöde bin ;) ..
wäre cool wenn sich noch jemand anderst meldet ;)
Gruß Steven