Tom: select selected makierung

Beitrag lesen

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."&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;
}

?>

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