Oft braucht man Formulare mit Text-Feldern oder Checkboxen, die ihre Eingaben auch nach dem Absenden des Formulars behalten - zum Beispiel bei fehlerhaften Eingaben. Besonders bei Auswahlboxen ist die Erhaltung der Markierung aufwendig und macht den Code unübersichtlich. Mit diesen Funktionen können Formularelemente mit nur einem Funktionsaufruf erstellt werden, die ihren Status behalten.


Sourcecode

<?
function inputbox($name$type$text)
{
  global 
$_POST;
  
$var $_POST[$name];

  if(
strtolower($type) === "submit")
    echo 
"<input name=\"$name\" type=\"$type\" value=\"$text\">";
  else
    echo 
"<input name=\"$name\" type=\"$type\" value=\"$var\">";
}

function 
checkbox($name,$text)
{
  global 
$_POST;
  
$var $_POST[$name];

  if (
$var == "on")
    
$checked=" checked";

  echo 
"<input name=\"$name\" type=\"checkbox\"$checked$text";
}

function 
radiobox($name$value$text)
{
  global 
$_POST;
  
$var $_POST[$name];

  if (
$var == $value)
    
$checked " checked";

  echo 
"<input name=\"$name\" type=\"radio\" value=\"$value\"$checked$text";
}

function 
selectbox($name$array)
{
  global 
$_POST;
  
$var $_POST[$name];

  echo 
"<select name=\"$name\">\n";

  foreach(
$array as $value => $text)
    {
      if (
$var == $value)
        
$selected " selected";
      else
        
$selected "";
      echo 
"<option value=\"$value\"$selected>$text</option>\n";
    }

  echo 
"</select>\n";
}
?>



Anwendungsbeispiel

<?

echo '<form method="post">';

inputbox("nickname","text","Name:");
checkbox("register","Registrieren");
echo 
"<br><br>";

selectbox("language",array("php"=>"PHP","perl"=>"Perl","asp"=>"ASP"));
echo 
"<br><br>";

radiobox("condition","fine","Gut");
radiobox("condition","medium","Geht so");
radiobox("condition","bad","Schlecht");
echo 
"<br><br>";

inputbox("submitbutton""submit""Senden");

echo 
"</form>";
?>



Hinweise

Die Funktionen nutzen $_POST als Umgebungsvariable, dadurch funktionieren sie auch bei ausgeschalteten register_globals, allerdings nur bei der Übertragungsmethode method="post". Soll method="get" benutzt werden, müssen sämtliche $_POST durch $_GET ersetzt werden.

(C) by Lukas Ruschitzka, Mai 2004 (veröffentlicht auf 4websites.de)