所以,例如在数据库中我有三个用户:Peter,John和Sara。有一个特定的字段,所有三个用户都可以写。 彼得写道:
"我喜欢苹果"
之后,John追加
"我喜欢香蕉"
。现在我有字段说
"我喜欢苹果,我喜欢香蕉和#34;
,所以如果我想显示哪个部分是由谁写的,我的approuch将是创建html标签: 该字段将是:
<span class="text-sequence-1">I like apples</span><span class="text-sequence-2"> and I like bananas</span>
然后,从数据库中我会按顺序选择句子,并在悬停时使用CSS悬停显示其他内容,悬停在每个部分上。
答案 0 :(得分:1)
我认为这种做法并不好。正如你所注意到的,你会得到很多令人讨厌的嵌套。
如果somone只编辑一个字母怎么办?
而不是那样,考虑行比较方法。就像Git一样。因此,比较第一行是否更改并存储每个版本。(更复杂的方式是仅存储已更改的行并应用git补丁等更改。)
我认为你的方式注定会失败。它太复杂了,没有逻辑比较方法可供使用。
John is cool
John is uncool
John is Uncool
John is weak
想想你会如何标记这些。如果somone删除了一段文字怎么办?编辑将不可见或您将插入一个空标记(不可见)?
不要标记,比较。我认为标记不是你想要的。另请参阅:Text comparison algorithm
答案 1 :(得分:1)
由于您使用的是数据库,因此请在单独的表中跟踪编辑内容。对于每次编辑,请保留以下字段:
显示该字段时,您可以显示指向“历史记录”的链接,该链接将显示谁编辑了什么时间。当你查看页面的历史时,你可以显示维基百科所做的individual differences between any two versions - 有许多库可以做到这一点,突出显示所有。 This library似乎很好,但有many others,各种语言。
当有人开始编辑时,让他们修改当时的版本(最高时间戳)。当他们提交编辑时(单击accept
或类似),再次检查是否有其他人在编辑时没有更改内容(父编辑的时间戳仍然最高)。如果有人做了更改了某些内容,请向他们展示您的父行和编辑之间的区别,并告诉他们在提交之前修复内容(可能会有几个编辑内容帐户)。这是“wikipedia方式”,它相当于一种轻量级版本控制(比Git
更容易实现)