2015-07-08 1 views
2

У меня возникла проблема корректного хранения даты в таблице базы данных MySQL под именем столбца 'publishDate' через форму html.PHP, не сохраняющий дату в столбце таблицы MySQL

// Contruct Of The Data 
public function __construct($data=array()) { 
if (isset($data['id'])) $this->id = (int) $data['id']; 
if (isset($data['publicationDate'])) $this->publicationDate = (int) $data['publicationDate']; 
if (isset($data['content'])) $this->content = $data['content']; 
} 

// Values To Post/Store For The Webpage Forms 
public function storeFormValues ($params) { 
$this->__construct($params); 
if (isset($params['publicationDate'])) { 
    $publicationDate = explode ('-', $params['publicationDate']); 
    if (count($publicationDate) == 3) { 
    list ($y, $m, $d) = $publicationDate; 
    $this->publicationDate = mktime (0, 0, 0, $m, $d, $y); 
    } 
    } 
} 

-Мои SQL Column тип данных 'publicationDate' является 'TIMESTAMP()' 'NOT NULL' по умолчанию 'CURRENT_TIMESTAMP'. дата должна быть сохранена & отформатирована '0000-00-00 00:00:00'.

HTML-форма ввода для «publicationDate», который является форма редактирования, которая скрыта и не быть отредактирован как:

<input type="hidden" name="publicationDate" id="publicationDate" value="<?php if ($results['article']->id ==true) { echo date("Y-m-d g:i:s", $results['article']->publicationDate);} else { echo date("Y-m-d g:i:s");}?>"/> 

Он будет хранить дату, как это - «0000-00-00 00:00:00 ', который равен' yyyy-mm-dd hh: mm: ss ', но будет отображаться только год, месяц, &. Часы, минуты, & секунд всегда будут отображаться в MySQL всеми нулями (00:00:00). Это, очевидно, проблема при отображении/перечислении моих данных «DESC», который, конечно, самый последний из них находится в верхней части списка.

ответ

1

Поскольку вы хотите, чтобы формат даты mysql был «yyyy-mm-dd hh: mm: ss», вам необходимо изменить формат даты php.

date("Y-m-d g:i:s" в date("Y-m-d H:i:s" в обоих случаях.

Формат g отображает час в 12-часовом формате часа без ведущих нулей в то время как формат H отображает час в 24-часовом формате с ведущими нулями.

Также при создании $publicationDate вы создаете его с помощью часа = 0, минута = 0, вторая = 0.

Если вы хотите, чтобы заполнить $publicationDate со временем использования представления форме это:

$publicationDate = mktime(date('H'), date('i'), date('s'), $m, $d, $y);

Это займет текущий час, минуту и ​​второй и представленный месяц, день и год от Пользователь.

Фактически вы должны назначить фактическое время в своей функции `storeFormValues.

Смотрите здесь руководство для mktime

+0

Как бы изменить его, потому что я пробовал много изменений со многими разными результатами. Например, он будет хранить его в 1969-12-31 00:00:00). Я понятия не имею, почему я получаю этот результат с различными изменениями, которые я пробовал. – TonyM0str0

+0

Я изменил дату в 24-часовом формате, но по-прежнему не сохраняет часы. Я считаю, что это в функции «storemformValues», используя mktime(). – TonyM0str0

+0

Я давно общаюсь с этим, и это сводит меня с ума. – TonyM0str0

0

Согласно документации для функции даты PHP (http://php.net/manual/en/function.date.php) в г в г: я: s будет 12-часовой формат час без ведущих нулей. Он должен быть H, который является 24-часовым форматом часа с ведущими нулями.

+0

Я изменил это и все еще получаю те же результаты при сохранении даты. – TonyM0str0