Im Allgemeinen ist es recht einfach, dasselbe Formular zu verwenden. Eine andere Frage ist, wie Sie Validierungsfehler beheben, ohne dass der Benutzer das Formular erneut ausfüllen muss - dies wird im selben Prozess gelöst. Sie benötigen einige Hilfsprogramme für die Auswahlfelder und alle Kontrollkästchen/Radio-Felder. Was genau die Helfer tun, bleibt Ihnen überlassen, aber diese werden Ihnen den Einstieg erleichtern:
function radio($name, $value, $selected_value)
{
$checked= ($value === $selected_value) ? 'checked="checked"' : null;
return '<input type="radio" name="'.$name.'" value="'.$value.'" '.$checked.' />';
}
Der Checkbox-Helper ist so ziemlich genau dasselbe. Die Auswahloptionen sind ziemlich ähnlich:
function select_option($text, $value, $selected_value)
{
$selected= ($value === $selected_value) ? 'selected="selected"' : null;
return '<option value="'.$value.'" '.$selected.'>'.$text.'</option';
}
Die Verwendung in der Form sieht etwa so aus:
<?
if ($_POST)
{
// TODO: Clean post data here - xss, magic_quotes, stripslashes, etc...
$cleaned_post = clean($_POST);
// TODO: perform whatever validation you need
if (validate($cleaned_post))
{
// insert, update, etc...
$myDatabase->Save($cleaned_post, $id);
redirect_to('another_page.php'); // redirect if need be, or stay here
}
$data = $cleaned_post;
}
else // Not posted, pull from database
{
$data = array(); // Initialize to empty array
// Attempt to pull from database. $id comes from somewhere... $_GET?
// If $id isn't set, no worries.
if ($id)
$data = $myDatabase->Find($id);
}
// TODO: Do some form prep work on the data - escape " characters
?>
<input type="text" name="field_1" value="<? echo $data['field_1'] ?>" />
<? echo radio("radio_1", "1", $data['radio_1'] ?> Radio 1
<select name="my_select_field">
<? echo select_option("Option 1", "1", $data['my_select_field']) ?>
<? echo select_option("Option 2", "2", $data['my_select_field']) ?>
<? echo select_option("Option 3", "3", $data['my_select_field']) ?>
<? echo select_option("Option 4", "4", $data['my_select_field']) ?>
</select>
Der Formularteil kann derselbe sein - es muss nur ein Array namens $data hineingehen. Das Array kann leer sein, aus der Datenbank gefüllt werden oder aus ungültigen Formulardaten stammen.