Tom: select selected makierung

Beitrag lesen

Hello,

und noch ein Gedicht aus meiner frühen Zeit.
Das habe ich ebenfalls eben gerade aus dem Netz besorgt.
Auf meinen eigenen Platten ist es sowohl im aktuellen Pfad als auch in den Datensicherungen verschwunden... Das geht ünber meinen Verstand.
Zum Glück gibt es Foren und Boards, Kundenserver etc...

###############################################################################
#                         Funktion put_optionlist()                           #
#                                                                             #

Funktion zur Ausgabe für Optionlist                                    #  18

#                                                                             #
#                                                                             #
###############################################################################

function put_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(select)
                                     // R =>HTML-String(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."&nbsp;&nbsp;</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;
}

Diese Funktion setzt bereits direklt auf einer MySQL-Datenbank-Tabelle auf und holt dort den Wert raus.

Es gibt aber noch neuere Versionen...
Ich bin jetzt etwas aufgeschreckt ob der verlorenen Daten.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau