私は人々が投稿を作成して提出できるサイトを持っています(StackoverflowやFacebookなど)。複数の投稿を同時に上書きすることなく、複数の投稿を同時に編集できるようにするにはどうすればよいですか?
ユーザーができることの1つは、投稿を送信する前に写真を添付することです。したがって、写真が添付されると(AJAXを使用)、作業中の投稿のための新しいPostID
がバックエンドデータベーステーブルに作成され、ユーザーのSESSION
の範囲に保存されます。 SESSION.LoggedIn.PostID = rsInsertedPost.PostID
。
投稿が最終投稿時にPostID
を作成する以外は、写真が添付されていなくても同じことが起こります。
私がSESSIONスコープに保存する理由は、ちょうど作成されたPostID
がバックエンドアプリケーション(私の場合はCFCコンポーネント)の他の複数の領域で使用されているためです。例えば、ユーザは、このようなのような別々のテーブルdbo.PostTags
に彼のポストに関連付けられたタグを挿入します:それはフォームの送信の処理を完了した
PostID | Tag
44 ColdFusion
44 Programming
44 SQL
した後、それはユーザーのセッションからPostID
を削除します。
私が直面する問題は、ユーザーが複数のブラウザウィンドウを開き、複数の投稿を同時に開始することを決定したときです。 SESSIONのPostID値は新しく作成されたものによって上書きされ続けます。つまり、別のブラウザのタブに戻って投稿を提出すると、最後に作成された投稿に影響します。
人々が現在ウィンドウで作業しているPostIDのトラックを保持するというこの問題を克服するには、どのような方法が良いでしょうか。 PostIDと並んでSESSIONに格納できる他のユニークな属性はありますか?それで、ブラウザのウィンドウごとに影響を受けるのはそのIDだけです。
これは、おそらく、セッションスコープに情報を格納するための第1引数です。それに対処する方法は、postIdを隠しフォームフィールドなどに置き、フォームを送信するときにpostIdを処理することです。 –
@DanBracuk他の方法はありますか?私はいくつかの本を探してみましたが、これが来るのは「話題」の下ではわかりません。このようなシナリオを扱うことができるいくつかのトピックをお勧めしますか? –
隠しフィールドにIDを格納すると何が問題になりますか? – Leigh