【问题标题】:Hidden text field time running隐藏文本字段时间运行
【发布时间】:2016-02-14 12:47:38
【问题描述】:

我指的是这个question

如果在插入记录时使用隐藏字段在 db 中存储时间并且访问者打开页面的时间是:下午 3:00 但他在同一页面上插入记录而不刷新并在下午 3:10 插入然后结果似乎是 3 :00pm 因为加载页面的时间早于该时间似乎已保存。那么我们如何在隐藏字段中保持运行时间!

更多关于表结构和php语句的信息:

表名称:“区域” 列:ID、名称、区域名称、位置、已添加时间、已更新时间、已删除

使用 php mysql。 隐藏文本字段包含:

<input name="TIME" id="TIME" type="hidden" value="<?php date_default_timezone_set("".$row_CompanyDetails['TimeZone']."");echo "".date("Y-m-d G:i:s");?>">

现在假设用户在 2016-02-14 03:34:59 打开页面 所以在隐藏字段值是:2016-02-14 03:34:59

假设用户添加记录几秒钟后,记录显示:2016-02-14 03:34:59,其中必须显示 2016-02-14 03:35:10 或 11 或 12+ ... .

所以我需要确切的值。这对我来说至关重要。

【问题讨论】:

  • 欢迎使用 StackOverflow。我在您的问题中添加了 html 标签,因为这是在这种情况下最重要的标签。也请尽量保持你的句子简短,它有助于读者。
  • 您使用的是哪种服务器技术? php? ASP?冷融合?节点.js? ...
  • 好的,我也添加了那个标签。提问时请注意指定相关标签。这里的 php 和 html 标签比你放的要重要得多。
  • 提醒:请同时标记您使用的数据库引擎:MySql? SQL 服务器?甲骨文?后格雷斯? ...并提供用于将数据插入数据库的 PHP 语句。

标签: php html mysql textfield hidden-field


【解决方案1】:

您的应用程序服务器不应依赖从隐藏输入发布的时间戳。

相反,它应该自己查询提交的时间。这既可以在应用服务器上完成,也可以在数据库插入/更新语句本身中完成。

使用MySql documentation中的信息,这里是如何使表Areas保持字段TimeAddedTimeUpdated在右边时间戳本身(需要 MySql 版本 >= 5.6):

ALTER TABLE Areas
    MODIFY TimeAdded DATETIME DEFAULT CURRENT_TIMESTAMP,
    MODIFY TimeUpdated DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

如果您的 MySql 版本不支持上述语句,则选择此替代方案:创建将给出相同结果的触发器:

CREATE TRIGGER insAreas BEFORE INSERT ON Areas FOR EACH ROW
    SET NEW.TimeAdded = CURRENT_TIMESTAMP;

CREATE TRIGGER updAreas BEFORE UPDATE ON Areas FOR EACH ROW
    SET NEW.TimeUpdated = CURRENT_TIMESTAMP;

这样你就不必更新任何日期了,MySql 会帮你做的:

  • 无需让 PHP 在 SQL 语句中传递这些日期。
  • 无需向浏览器中的隐藏输入发送日期
  • 无需更正时间或时区。 MySql 是唯一使用服务器上的时间更新这些时间的。

【讨论】:

  • 它是如何在应用服务器或数据库插入语句中完成的?我尝试了很多,但无法找到解决方案。
  • 最好的是 db insert 语句,但您需要首先指定您使用的数据库引擎,因为语法取决于此。还请提供您目前拥有或尝试过的实际陈述。
  • 实际上隐藏的文本字段包含客户端登录时间。基于php的网站。 <input name="TIME" id="TIME" type="hidden" value="<?php date_default_timezone_set("".$row_CompanyDetails['TimeZone']."");echo "".date("Y-m-d G:i:s");?>"> 我需要将其存储在隐藏字段中,因为这是用于表中的 TimeAdded,并且表中还有 TimeUpdated,它是在 mysql 中处理的。所以对于 TimeAdded 我需要通过隐藏的文本字段。
  • 你真的应该把这些信息放在你的问题中。还请在您的问题中说明您正在运行哪个数据库引擎,并提供您用于更新数据库的 PHP 代码。
  • 你先让PHP告诉浏览器哪个是TimeAdded,然后让浏览器再告诉它PHP,这似乎是错误的。 PHP 应该只记住这一点,或者从数据库中读取它。由于用户存在,它应该已经存在。如果您在问题中提供了代码,我可以为您提供帮助.........
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 2014-03-18
  • 2011-01-19
相关资源
最近更新 更多