2016-02-14 5 views
1

IM со ссылкой на эту questionСкрытого время текстового поля работает

что, если скрытое поле используются, чтобы хранить время в дб при вставке рекорда & посетителей времени открывает страницу: 3:00 вечер, но он вставляет записи на одной странице без обновления & вставляет в 3:10 вечера, тогда результаты, похоже, равны 3:00 вечера, потому что время было раньше, когда страница была загружена, это время, похоже, сохраняется. Итак, как мы продолжаем работать в скрытом поле!

Более подробная информация о структуре таблицы, & PHP заявление:

Название таблицы: "Область" столбцы: ID, имя, AreaName, должность, TimeAdded, TimeUpdated, Удаляется

Использования 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 3:34:59

Так скажем, пользователь добавляет запись. Через несколько секунд запись показывает: 2016-02-14 03:34:59, где, как и должно быть показано 2016-02-14 03:35:10 или 11 или 12+ .. ..

Так что мне нужно точное значение. Это очень важно для меня.

+0

Добро пожаловать в StackOverflow. Я добавил тэг html к вашему вопросу, поскольку это самый важный в этом контексте. Пожалуйста, также старайтесь держать свои предложения короткими, это помогает читателю. – trincot

+0

Какую серверную технологию вы используете? PHP? ASP? Холодный синтез? Node.js? ... – trincot

+0

i m используя только php. –

ответ

1

Ваш сервер приложений не должен полагаться на отметку времени, отправленную со скрытого ввода.

Вместо этого он сам должен запросить время подачи заявки. Это можно сделать как на сервере приложений, так и в самой инструкции вставки/обновления базы данных.

Используя информацию в MySql documentation, вот как сделать таблицу Areas держать поля TimeAdded и TimeUpdated в нужное время самой марки (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 является единственным, кто обновляет эти времена, используя время на сервере.
+0

Как это делается на сервере приложений или в инструкции вставки db? Я много пробовал, но не смог найти решение. –

+0

Лучше всего это инструкция вставки db, но сначала вам нужно указать, какой механизм базы данных вы используете, поскольку от этого зависит синтаксис. Также укажите фактическое заявление, которое вы в настоящее время имеете или пытаетесь использовать. – trincot

+0

Фактически скрытое текстовое поле содержит время клиента, который вошёл в систему. Сайт построен на php. '"> ' Мне нужно, чтобы это хранилось в скрытом поле, так как это для TimeAdded в таблице, а также есть TimeUpdated в таблице, которая является дескриптором в mysql. Так что для TimeAdded мне нужно скрытое текстовое поле. –

 Смежные вопросы

  • Нет связанных вопросов^_^