Mailinglisten-Archive |
Tobias wrote:
wie kann man bei einem ENUM Feld die Werte die moglich sind in PHP auslesen ?
Ich Denke da eine eine HTML-Selectbox, komme aber leider ueberhaupt nicht an
die Werte ran.
Hi Tobias:
Hier ein 'Rohcode' den ich aus einer selbstdefinierten Klasse ausgeschnitten
habe:
Als Orginalcode funzt das, aber so ausgeschnitten hab ich ihn noch nicht
getestet.
in $ftype["Name_des_Feldes"] steht enum, set oder check (fuer Y,N),
in $enum["Name_des_Feldes"][Nr] steht der String,
in $enum["Name_des_Feldes"]["value"][Nr] steht der Wert,
fuer $set gilt entsprechendes.
Es werden alle Felder der Tabelle geprueft. Wenn du nur ein Feld auslesen
willst,
musst du den Code entsprechend eindampfen (while raus set - Pruefung raus
e.t.c)
Hier der Code:
<-------schnipp
$table = "deine_Tabelle";
$link = mysql_pconnect($Host, $User, $Password);
$result = mysql_query("SHOW FIELDS FROM ".$table,$link);
if ($result) {
while ($row= mysql_fetch_array($result)) {
if(is_int(strpos($row["Type"],"enum")))
{
$tok = substr($row["Type"],strpos($row["Type"],"'")+1);
$tok = substr($tok,0,strlen($tok)-1);
$tok = strtok($tok,"'");
if (is_int(strpos($row["Type"],"N','Y'"))) {
$ftype[$row["Field"]] = "check";
}
else
{
$ftype[$row["Field"]] = "enum";
$i = 0;
while($tok or $tok == "0") {
if ($tok <> ",") {
$enum[$row["Field"]][$i] = $tok;
$enum[$row["Field"]]["value"][$i] = $i + 1;
$i++;
}
$tok = strtok("'");
}
}
}
else
if(is_int(strpos($row["Type"],"set")))
{
$ftype[$row["Field"]] = "set";
$tok = substr($row["Type"],strpos($row["Type"],"'")+1);
$tok = substr($tok,0,strlen($rest)-1);
$tok = strtok($tok,"'");
$i = 0;
while($tok) {
if ($tok <> ",") {
$set[$row["Field"]][$i] = $tok;
$set[$row["Field"]]["value"][$i] = pow(2, $i);
$i++;
}
$tok = strtok("'");
}
}
}
}
--------> schnipp
Gruss Wolfgang
php::bar PHP Wiki - Listenarchive