0

ユーザーがレポートを送信するために使用できるフォームがあります。フィールドの 1 つはかなり長いテキストを配置できるテキスト領域であるため、1 分ごとにエントリを自動保存する機能を挿入したいと考えていますが、この背後にある原則についてはよくわかりません。

私が考えることができる解決策は次のとおりです。

  1. データベースの現在のエントリをバージョンとして自動保存します (例: Entry_id = 1、Version = 1、Visibility = FALSE)。
  2. 1 分後、Entry_id = 1、Version = 2、Visibility = FALSE として再度自動保存します)
  3. 次のいずれかになるまで、上記を繰り返します。
  4. ユーザーは「SAVE」を押します。その場合、最後のバージョンの可視性を TRUE に変更し、他のすべてのバージョンを削除します (entry_id == 1 および可視性 == FALSE のすべてのエントリ)。
  5. ユーザーは保存しないことを選択します (「DISCARD」)。この場合、entry_id == 1 および visibility == FALSE であるすべてのエントリを削除します

2 つの考慮事項:

  • 上記は、顧客が既存のエントリを編集している場合にもうまく機能するはずです。
  • entry_id を主キーとして使用できなくなりました

これは私の頭ではうまくいっているようですが、非常に複雑なプロセスを使用しているかどうか疑問に思っています。より良いプロセスはありますか?

ありがとう、P

4

1 に答える 1

2

フォームが読み込まれると、関数がトリガーされ、10 秒ごと (または任意の時間) に繰り返されます。その関数はフォームを取得し、シリアル化し、サーバー側スクリプト (ほとんどの場合 PHP) に送信します。その PHP スクリプトは、そのレコードを (AJAX を介して) データベースに挿入し、挿入されたレコードの主キー (id) を返します。関数が初めて実行されると、次のパラメータを持つレコードが挿入されます。

Entry_id = 1 (or whateverthe primary key at which the record is saved), 
Version = 1, 
Visibility = FALSE

この関数は主キーを返しました。したがって、自動保存関数の開始時に、主キーが返されるかどうか (レコードが挿入されるかどうか) をチェックする必要があります。このキーが返された場合は、フォームをシリアル化し、別のキーに送信します。パラメータとして最初の自動保存呼び出しから返された主キーとともに、サーバー側スクリプトの関数 (更新関数) を実行し、データベース内のこのキーに対してレコードを更新します。

ユーザーがコンテンツを入力し続けると、自動保存機能が 10 秒ごとに起動し続け、データが (初めて) 挿入され、常に更新されます。ユーザーがフォームの保存ボタンを押すとすぐに、再びその主キーを取得し、そのレコードを次の値で更新します。

Version = 1, 
Visibility = TRUE
于 2013-11-06T12:48:44.983 に答える