隐藏文本字段时间运行


Hidden text field time running

我指的是这个问题

如果在插入记录

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

有关表结构和 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+ ....

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

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

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

使用 MySql

文档中的信息,以下是使区域将字段 TimeAddTimeUpdated 保留为正确的时间戳本身的方法(需要 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 是唯一使用服务器上的时间更新这些时间的人。