一般的に同じフォームを使用するのはかなり簡単です。別の質問は、検証エラーを解決し、ユーザーがフォームを再入力しないようにすることです。これは同じプロセスで解決されます。選択フィールドとチェックボックス/ラジオフィールドにはいくつかのヘルパーが必要です。正確にどのくらいのヘルパーがやっていることはあなた次第ですが、これらは、あなたが開始されます:
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>
フォーム部分は同じにすることができ - それはちょうどそれに入る$データをという名前の配列を必要とします。配列は空でも、データベースから読み込まれたものでも、無効なフォームデータでも構いません。
is_emptyはPHPの機能ではありません。あなたが意味すると思う: 'if(!row( 'title'))echo $ row ['title'];' ['empty()'](http://php.net/manual/function。 empty.php)もNULLをチェックします。 –
個人的に私は主キーが存在するかどうかをチェックし、それ以外のものはすべて記入してください。 DBを無意味な忙しさから救うことができます。また、使用パターンに応じていくつかの大きな節約効果が得られます。 –
@userそうですね、これは私がやることです。通常、あなたが何かを追加するとあなたは異なるフォームを持ちますが、それは同じフォームではありません。これで、いつでもフォームの表示と編集を行うことができ、完璧な意味があります。エントリのリストを作成し、そのエントリを表示するリンクをクリックして編集することもできます。これは、別の送信ボタン(追加の代わりに編集)を使用した場合を除いて、全く同じフォームになる可能性があることに注意してください。今これは本当にあなたがこれをしたいと思う方法にも依存します。 – Matt