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)