Hello,
und noch eine Version, eine Nummer neuer als die andere datenbankbezogene
<?php ### optionlist.php ###
function make_optionlist($con, // DB-Verbindung
$tablename, // Tabellenname
$fieldname, // Feldname
$fieldstr, // Inhalt des Feldes im Datensatz
$size, // Anzahl der Zeilen der Optionlist
$sorted, // 0 => Anzeige unsortiert
// 1 => Alphabetisch aufsteigend
// 2 => Alphabetisch absteigend
$viewtype) // S => HTML-String wird (select single oder multiple)
// R => HTML-String wird (radio oder checkbox)
{
if($viewtype != "R")
{
$viewtype = "S"; // HTML-String wird Default
}
if(!$con)
{
die(N."Der Datenbankserver ist zur Zeit nicht erreichbar.".N);
}
// Fieldvalue darf ungültig sein, da es sich auch um den Insertmodus handeln kann
if((!$tablename)or(!$fieldname)or($tablename == "")or($fieldname == ""))
{
return false;
}
$descript = mysql_query("describe ".$tablename." ".$fieldname.";",$con);
if($descript)
{
$object=mysql_fetch_object($descript);
}
else
{
return false;
}
if(!$object)
{
return false;
}
elseif(strtolower(substr($object->Type,0,4))=="enum")
{
if($viewtype == "R")
{
$radio = true;
$optiontype = "<input class="box" type="radio" name="rad_".$fieldname."[]"";
}
else
{
$optiontype = "";
}
}
elseif(strtolower(substr($object->Type,0,3))=="set")
{
if($viewtype == "R")
{
$radio = false;
$optiontype = "<input class="box" type="checkbox" name="chk_".$fieldname."[]"";
}
else
{
$optiontype = " multiple";
}
}
else
{
return false;
}
$ok=ereg("('(.*)')",$object->Type,$opt_arr);
if(!$ok)
{
return false;
}
$optvalues=explode("','",$opt_arr[2]);
if($sorted==1)
{
asort($optvalues);
}
elseif($sorted==2)
{
arsort($optvalues);
}
if (is_array($fieldstr)) // Feld-Werte aus Post-Array
{
$fieldarray=$fieldstr;
}
else // Feld-Werte aus DB
{
$fieldarray = explode(",",$fieldstr);
}
if($viewtype == "R")
{
if(!$radio) // Leere Elemente für Ceckbox unterdrücken
{
$i=0;
while($erg=array_slice($optvalues,$i,1))
{
if (trim($erg[0])=="")
{
array_splice($optvalues,$i,1);
}
else
{
$i++;
}
}
}
if(!$size or ($size <=0))
{
$size=1;
}
$zeilenanzahl = ceil(sizeof($optvalues)/$size);
$spaltenanzahl=ceil(sizeof($optvalues)/$zeilenanzahl);
$returnvalue = "<table class="choice">\n";
$z=0;
while($z < $zeilenanzahl)
{
$returnvalue.="<tr>\n";
$s=0;
while($s < $spaltenanzahl)
{
$index=($s * $zeilenanzahl) + $z;
$optarray=array_slice($optvalues,$index,1);
$option=$optarray[0];
if($option) // Values ohne Wert unterdrücken
{
if(in_array($option,$fieldarray))
{
$checked = " checked />";
}
else
{
$checked=" />";
}
$returnvalue.= "<td style='text-align:left'>".$optiontype." value="".$option.""".$checked."</td>";
$returnvalue.= "<td>".$option." </td>\n";
}
$s++;
}
$returnvalue.="</tr>\n";
$z++;
}
$returnvalue.= "</table>\n";
}
else
{
$returnvalue = "<select class="select" name="sel_".
$fieldname."[]" size="".$size.""".$optiontype.">\n";
while(list($key,$option) = each($optvalues))
{
if(in_array($option,$fieldarray))
{
$selected = " selected";
}
else
{
$selected = "";
}
$returnvalue.="<option value="".$option.""".$selected." >".htmlentities($option)."</option>\n";
}
$returnvalue.= "</select>\n";
}
return $returnvalue;
}
?>
Ich glaube, hier hat jemand "gespielt" bei mir als ich im Krankenhaus lag...
Das ist ja nicht normal. Aber ich habe alles weit genug verteilt ;-)
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau