【发布时间】:2013-04-06 10:00:58
【问题描述】:
我有一个<div contenteditable="true" />,用户可以在其中写入,长度几乎没有限制。
div 中的数据在 MySQL 数据库中以时间戳保存。
现在我的目标是在左侧有一个小注释,告诉用户文档的每个部分何时创建(分辨率应该以天为单位)。
现在的问题是:我怎样才能最好地保存信息(什么时候发生了变化)?
到目前为止,我考虑了以下似乎都可以改进的选项:
- 每次用户访问文档末尾的站点时,我都会插入一个标志(例如,一个带有类和存储编辑开始的数据属性的 emtpy 跨度)。然后在调用保存脚本时将此标志保存到数据库中。这个选项可以很容易地在侧面显示日期 - 我只需将它们放在与空跨度相同的高度,跨度告诉我日期。缺点是:用户可能会意外删除时间戳跨度,并且如果用户长时间不关闭窗口,则不会插入新的时间跨度(这可以通过每 X 分钟插入新的时间戳跨度来避免,因此删除部分是更相关)
- 尝试在每次将数据传递到保存脚本时进行字符串差异比较,并且只保存带有时间戳的差异。然后当页面被加载时,将所有部分按正确的顺序放在一起,并在 Javascript 中将日期注释放在正确的位置。虽然这对我来说听起来像是很多开销 + 当旧部分被更改时,两个部分可能会合二为一,等等。总而言之,这些选项听起来非常复杂。
任何意见/想法/建议都非常感谢!
【问题讨论】:
-
内容的类型是结构化的还是非结构化的?如果它是非结构化的(就像时间的代码库),那么我建议使用armel提供的解决方案。如果它是结构化的或可以结构化的,那么我和 MrFishie 提供的解决方案。
-
内容的类型是结构化的还是非结构化的?如果它是非结构化的(如时间的代码库),那么我建议使用armel提供的合并解决方案。如果它是结构化的或可以结构化的,那么 MrFishie 和我提供的解决方案。非结构化文档处理起来更复杂,因为通常很难确定适当的更改层次结构。 (这在 Lotus Notes 中跨不同服务器的复制一直是一个非常成问题的问题。)这是我希望您考虑的评论版本。
-
@LoekBergman:输入是用户生成的,不遵循任何特定结构。
标签: php mysql diff contenteditable