사람들이 게시물을 작성하여 제출할 수있는 사이트가 있습니다 (예 : Stackoverflow 및 Facebook).사람들이 각 게시물을 겹쳐 쓰지 않고 동시에 여러 게시물을 편집 할 수있게하려면 어떻게해야합니까?
사용자가 할 수있는 한 가지는 게시물을 제출하기 전에 사진을 첨부하는 것입니다. 따라서 사진이 첨부되면 (AJAX 사용) 새 PostID
이 작업중인 게시물의 백엔드 데이터베이스 테이블에 생성되고 사용자의 SESSION
범위에 저장됩니다. SESSION.LoggedIn.PostID = rsInsertedPost.PostID
.
게시물을 최종 제출할 때 PostID
이 생성된다는 점을 제외하면 사진이 첨부되지 않은 경우에도 동일한 문제가 발생합니다.
내가 세션 범위에 저장하는 이유는 방금 생성 된 PostID
이 백엔드 응용 프로그램 (본인의 경우에는 CFC 구성 요소)의 여러 다른 영역에서 사용되기 때문입니다. 예를 들어, 사용자는 같은 별도의 테이블 dbo.PostTags
에 자신의 게시물과 연관된 태그를 삽입합니다 :
PostID | Tag
44 ColdFusion
44 Programming
44 SQL
를이 양식 제출 처리를 완료 한 후, 사용자의 세션에서 PostID
을 제거합니다.
내가 직면하게 될 문제는 사용자가 여러 브라우저 창을 열고 동시에 여러 게시물 작업을 시작하기로 결정한 경우입니다. SESSION의 PostID 값은 새로 만든 브라우저에서 PostID 값을 계속 덮어 씁니다. 즉, 다른 브라우저 탭으로 돌아가서 게시물을 제출하기로 결정하면 마지막으로 작성된 게시물에 영향을 미치게됩니다.
사람들이 현재 창에서 작업중인 PostID를 추적하는이 문제를 극복하는 좋은 방법은 무엇입니까? PostID와 함께 세션에 저장할 수있는 다른 고유 한 속성이 있습니까? 브라우저 창마다 영향을받습니다.
이것은 아마도 세션 범위에 정보를 저장하는 것에 대한 첫 번째 인수 일 것입니다. 그것을 극복하는 방법은 postId를 숨겨진 양식 필드 나 비슷한 것으로 넣고 양식을 제출할 때 처리하는 것입니다. –
@DanBracuk 다른 대안이 있습니까? 나는 일부 책을 보려고했지만 '주제가 무엇인지'에 대해서는 확신 할 수 없다. 이런 유형의 시나리오를 다룰 수있는 몇 가지 주제를 제안 해 주시겠습니까? –
숨겨진 필드에 ID를 저장하는 것이 잘못된 이유는 무엇입니까? – Leigh