2011-07-11 12 views
3

ここにfirst pictureのようなエントリをMySQLデータベースに追加するPHPフォームを作成しました。しかし、2番目と3番目の写真に示されているように、同じフォームを使用して、すでにデータベースに入っている情報を表示して編集したいとします。これを行う最も簡単な方法は何ですか?ドロップダウンのために同じPHPフォームのmysqlエントリを追加/表示/編集します

<input type="text" name="title" value="<? if(!empty($row['title'])) echo $row['title']; ?>" /> 

、値の表を作る:

答えて

0

チェックは、フィールドの値は、データベース内のnullの場合そう、そのフィールドに値を記入していないかどうかを確認します

<select name="country"> 
<option value="85" <? if($row['country'] == 85) echo " selected"; ?> /> 

これはかなり広いの質問にはかなり広い答えは:それはこのようなものと印刷何かがあるならば、あなたはあなたのIDを一致させることができ、ドロップダウンの値と一致します。

+1

is_emptyはPHPの機能ではありません。あなたが意味すると思う: 'if(!row( 'title'))echo $ row ['title'];' ['empty()'](http://php.net/manual/function。 empty.php)もNULLをチェックします。 –

+0

個人的に私は主キーが存在するかどうかをチェックし、それ以外のものはすべて記入してください。 DBを無意味な忙しさから救うことができます。また、使用パターンに応じていくつかの大きな節約効果が得られます。 –

+0

@userそうですね、これは私がやることです。通常、あなたが何かを追加するとあなたは異なるフォームを持ちますが、それは同じフォームではありません。これで、いつでもフォームの表示と編集を行うことができ、完璧な意味があります。エントリのリストを作成し、そのエントリを表示するリンクをクリックして編集することもできます。これは、別の送信ボタン(追加の代わりに編集)を使用した場合を除いて、全く同じフォームになる可能性があることに注意してください。今これは本当にあなたがこれをしたいと思う方法にも依存します。 – Matt

1

一般的に同じフォームを使用するのはかなり簡単です。別の質問は、検証エラーを解決し、ユーザーがフォームを再入力しないようにすることです。これは同じプロセスで解決されます。選択フィールドとチェックボックス/ラジオフィールドにはいくつかのヘルパーが必要です。正確にどのくらいのヘルパーがやっていることはあなた次第ですが、これらは、あなたが開始されます:

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> 

フォーム部分は同じにすることができ - それはちょうどそれに入る$データをという名前の配列を必要とします。配列は空でも、データベースから読み込まれたものでも、無効なフォームデータでも構いません。

関連する問題