Как правило, довольно легко использовать одну и ту же форму.Другой вопрос, как вы решаете ошибки проверки и не заставляете пользователя повторно заполнять форму - это решается как в том же процессе.Вам понадобятся некоторые помощники для полей выбора и любых полей-флажков / радио.Точное количество помощников зависит от вас, но они помогут вам начать:
function radio($name, $value, $selected_value)
{
$checked= ($value === $selected_value) ? 'checked="checked"' : null;
return '<input type="radio" name="'.$name.'" value="'.$value.'" '.$checked.' />';
}
Помощник флажка в значительной степени точно такой же.Параметры выбора очень похожи:
function select_option($text, $value, $selected_value)
{
$selected= ($value === $selected_value) ? 'selected="selected"' : null;
return '<option value="'.$value.'" '.$selected.'>'.$text.'</option';
}
Использование их в форме следует примерно так:
<?
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>
Часть формы может быть такой же - ей просто нужен массив с именем $ dataвдаваясь в это.Массив может быть пустым, заполненным из базы данных или из недопустимых данных формы.