3

フィールドが少ないフォームがあります。「下書きとして保存」ボタンをクリックすると、ajax 呼び出しが行われ、入力されたフィールドがデータベースに保存されます。

しかし 、ユーザーが「下書きとして保存」を再度クリックすると、今度は前のフィールドが更新され、新しいフィールドは作成されません。

そこで対策を考えました

-。隠しフィールドを作成し、ページが読み込まれたときに一意の番号で読み込み、SESSION 変数に保存します。

一意の番号をセッション変数と比較した後、番号が同じ場合は、SQL のフィールドを更新するか、SQL に新しいフィールドを作成します。

上記の解決策は大丈夫ですか、それとも人々は別の解決策を使用していますか?

4

3 に答える 3

3

「ドラフトを保存」するための最初の Ajax 呼び出しで、次のような非常に単純な JSON を取得してください。

{ field_id: 1 }

そして、その値を入力に配置してDOMに保存するか、変数に保存するだけです。その後、後続のドラフト/最終保存でこの変数の存在を確認し、それを考慮して Ajax 投稿を変更できます。final投稿のステージを追跡するなど、テーブルにブール列を追加するだけです。サーバー側の観点からは、 MySQLiの insert_id() メソッドを呼び出すことで、MySQL 挿入の値を簡単に取得できます。

本当に素晴らしい追加のタッチには、pushStateメソッドを使用して URL を更新することも含まれる場合があります (例: へindex.php?draft=1)。そうすれば、ユーザーが戻るボタンをクリックした場合でも、ユーザーは正しいページに戻ることができ、保存されたデータを取得することができます。

于 2013-07-26T18:10:20.697 に答える
1

データベースに自動インクリメント フィールドがある場合、そのフィールドの ID を取得できます。ユーザーがドラフトとして保存すると、変更をデータベースに保存し、レコードの ID をセッションに保存できます。その後、ユーザーが再び下書きとして保存すると、その ID を使用してデータベース内の正しい行を更新できます。

ID をフォームに保存することはできますが、ユーザーは簡単に (おそらく誤って) 間違った ID を使用してデータを投稿し、間違った行を更新する可能性があります。

于 2013-07-26T18:11:59.320 に答える
1

1 解決策 = フィールドの値を DB テーブルに追加します = 再度送信されたときに値を比較します。値が一致する場合は変更されず、それ以外の場合は変更が行われないため、mysql を更新できます。

2 Solition = 他の解決策として、セッションにデータを保存し、ユーザーが編集を完了したら、それらを DBase tbl に追加することができます。

3 番目の解決策 データを任意のフラット ファイル システムに保存し、それを使用して mysql テーブルに追加します。

4番目の解決策 フォームの編集フィールドを許可して、ユーザーがいつでも編集したい場合にデータを変更できるようにします。

于 2013-07-26T18:10:48.087 に答える