Steven Binder: Enum Werte auslesen

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

  1. 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

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. 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.

      1. 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

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. 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