0

我有一个网站,人们可以创建帖子并提交它们(就像在Stackoverflow和Facebook上)。如何允许人们同时编辑多个帖子而不覆盖每个帖子?

用户可以做的一件事就是在提交帖子之前附上一张照片。因此,只要附加照片(使用AJAX),就会在后端数据库表中为正在处理并存储在用户的SESSION范围内的帖子创建新的PostID,例如, SESSION.LoggedIn.PostID = rsInsertedPost.PostID

即使没有附加照片,也会发生同样的情况,除非它会在最后提交的帖子上创建PostID

我将它存储在SESSION作用域中的原因是因为刚刚创建的PostID在后端应用程序(本例中为CFC组件)的多个其他区域中使用。例如,它会插入用户与职务相关联成一个单独的表dbo.PostTags像这样的标签:

PostID | Tag 
44  ColdFusion 
44  Programming 
44  SQL 

处理完表单提交后,会从用户的会话中删除的PostID

我即将遇到的问题是,用户打开多个浏览器窗口并决定同时开始在多个帖子上工作。 SESSION的PostID值将不断被新创建的值覆盖,这意味着如果他们决定返回到不同的浏览器选项卡并提交他们的帖子,它将最终影响最后创建的帖子。

什么是解决这个问题的好方法,它可以跟踪人们当前正在每个窗口上处理的PostID。是否还有一些其他独特属性可以存储在SESSION中与PostID一起使用,以便每个浏览器窗口只会打开一个属性?

+4

这可能是在会话范围内存储信息的头号参数。处理它的方法是将postId放入隐藏的表单域或类似的东西,并在提交表单时处理它。 –

+0

@DanBracuk有没有别的选择?我试过寻找一些书籍,但我不确定在什么'主题'这会来。你能否建议我看看可能涉及这种情况的一些话题? –

+0

将id存储在隐藏字段中有什么问题? – Leigh

回答

0

我喜欢使用UUID。然后我肯定不会使用相同的ID两次,甚至不跨数据库表。 因此,不要将PostID设置为数字(通常为1 +数据库表中的最后一个ID),请使用#createUUID()#

相关问题