我有一个文档字段用于文档,这很好用。现在问题是用户在其中输入一些新文本。我需要格式化日期(dd.mm.yy),它应该自动附加到时间戳上。
例如,当用户首次输入“生产问题”时。然后单击保存然后它应显示为 19.10.10 16:39“生产问题”。
之后,如果其他人更改了该字段并添加了“在开发阶段”。
应该是19.10.10 18:39“生产问题”,29.10.10 16:59“在发展阶段”。
在对表单进行汇总时,我无法跟踪新添加的文本。因为我将在后变量中获得完整的文本。
我发现了一个肮脏的技巧,在保存文本后放置了一些奇怪的字符。现在在我的帖子变量中,我将能够区分旧文本和新添加的内容。将当前时间戳添加到新添加的时间戳中。
如果有人能建议我做一个更好的程序,我会很高兴。
提前致谢!
答案 0 :(得分:1)
在我的脑海中有几个选项:
(a)使用JS - 更改触发器
触发的文本字段上的某些javascript在隐藏的表单字段中设置值。此字段将发回PHP,因此它知道文本字段可能已更改(仍然无法判断用户是否更改了它然后将其更改回来)。
例如。 JS触发字段更改。
<input type="text" name="textfield"
onChange="this.form["textfieldchanged"].value=1;" />
<input type="hidden" name="textfieldchanged" value="" />
(b)使用PHP - 更改检测
在表单提交时检查具有提交版本的字段的当前版本,如果已更改,则存储新版本。
例如。 PHP比较
if ($_REQUEST["textfield"]!=$current_textfield) {
//...
}
在这两种情况下,实际存储值时,现在只需从PHP添加日期。
代码:最终的PHP片段
function storeText($text) {
$date=Date();
//Store $text+$date .. file, SQL, not sure what you're doing here.
}
您还可以使用JS在文本更新时(而不是标志)在隐藏字段上设置日期。这样做的好处是本地系统日期包含在表单提交中(如果用户位于不同的时区,则特别有用),但用户可以通过更改本地时钟来游戏您的软件。提交条目...想象某人想要在其他人之前添加文字,他们可以设置他们的时钟 - 提交 - 将时钟设置为正确的时间并继续。
答案 1 :(得分:0)
不确定我是否完全关注 - 您可以在表单中有一个默认为日期的隐藏字段 - 然后将其作为单独的帖子变量提交...
<form>
<input type='text' name='textfieldforcomments' />
<input type='hidden' name='datetracker' value='".date("d.m.y h.i")."'/>
</form>