0

データベースの更新アクティビティに少し問題があります。

ケーススタディ

PHP 編集でフォームを作成し、クエリを実行して、更新するレコードの値を取得します。スクリプトの抜粋:

<?php
  $row = mysql_fetch_assoc(mysql_query("SELECT id, field_1, field_2 FROM mytable WHERE id = $editid"));
?>

 ...

<form action="" method="post">
  FIELD 1 <input type = "text" name = "f1v" value = "<? Php echo $ row ['field_1'];?>" />
  FIELD 2 <input type = "text" name = "f2v" value = "<? Php echo $ row ['field_2'];?>" />
  <input type="submit" />
</form>

....
// When the form posted

if ($_POST)
{
   $f1v = $ _POST['f1v'];
   $f2v = $ _POST['f2v'];

   mysql_query("UPDATE mytable SET field_1 = '$f1v', field_2 = '$f2v' WHERE id = $editid") or die ();

   // Redirect form
}

この場合、フォームが送信されたときに、1 つ以上のフィールド値に変更があるかどうかを確認するアクティビティが必要です。そのロジックはおおよそ次のようになります。

if ($ _POST)
{    
    // Compare
   if the submitted value is different from the existing value in the record
   {
      Updated record
   }
   else
   {
      Do not update record
   }       
    // Redirect form
}

簡単にできる方法はありませんか?ご協力ありがとうございました。

4

2 に答える 2

1

チェックしないでください。エントリが有効であることを確認してから投入してください。

于 2012-06-05T03:36:21.937 に答える
-1

フィールドの現在の値を持つ 2 つの隠しフィールドを保持します。フォームを送信した後、送信された値が隠しフィールドの値と異なるかどうかを確認してください。

于 2012-06-05T04:07:53.583 に答える