0

私は人々が投稿を作成して提出できるサイトを持っています(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だけです。

+4

これは、おそらく、セッションスコープに情報を格納するための第1引数です。それに対処する方法は、postIdを隠しフォームフィールドなどに置き、フォームを送信するときにpostIdを処理することです。 –

+0

@DanBracuk他の方法はありますか?私はいくつかの本を探してみましたが、これが来るのは「話題」の下ではわかりません。このようなシナリオを扱うことができるいくつかのトピックをお勧めしますか? –

+0

隠しフィールドにIDを格納すると何が問題になりますか? – Leigh

答えて

0

私はUUIDを使いたいです。それで、私は同じIDを2度使用することは決してありません。 したがって、PostIDを数値(通常は1 +データベーステーブルの最後のID)に設定する代わりに、#createUUID()#を使用します。

関連する問題