Проблема с сохранением форматов даты и времени в моей базе данных

У меня проблемы с сохранением значений даты и времени. Я пробовал разные форматы, вот собственно попробуйте.

Валидатор в моей форме:

 $datum=$this->CreateElement('text','datum')
->setAttrib('size', '10')
->addValidator(New Zend_Validate_Date('MM-DD-YYYY'));
$zeit=$this->CreateElement('text','zeit')
->setAttrib('size', '10')

->addValidator(new Zend_Validate_Date(array('format' => 'H:i:s')));

Фрагмент моего контроллера addAction

if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$logenr = $this->_getParam('kopfnr', 0);
$kopfnr = $logenr;
$dat= $form->getValue('datum');
$zeit = $form->getValue('zeit');
$thema = $form->getValue('thema');
$aktermine = new Application_Model_DbTable_Aktermine();
$aktermine->addTermine( $kopfnr, $dat, $zeit, $thema);

И моя функция добавления в моем классе базы данных:

public function addTermine($kopfnr, $datum, $zeit, $thema)
{
$data = array(
'kopfnr' => $kopfnr,
'datum' => $datum,
'zeit' => $zeit,
'thema' => $thema,
);
$this->insert($data);
}

Я использую базу данных MySQL при установке WAMP.

Где моя ошибка? В качестве замечания я хочу сказать, что я получаю новую запись, значение «thema» и ключи должным образом сохраняются, поэтому я думаю, что это должно быть где-то в формате.

РЕДАКТИРОВАТЬ: я получаю новую запись, но поля даты и времени пусты. Я не получаю ошибок

NEW: я добавил тест отладки в моем контроллере, чтобы увидеть, что происходит для значения даты, вот ответ:

строка ’01 -04-2016 ‘(длина = 10)
(Я поставил в 01-04-2016)

1

Решение

Читая ваши комментарии, я понимаю, что у вас есть две проблемы. Первый помещает дату в вашу таблицу, а второй позволяет пользователю использовать обычный формат даты (дд / мм / гггг).

Первая проблема решается, когда вы переформатируете пользовательский ввод перед тем, как поместить его в базу данных. Вы можете добавить следующую строку в $form->isValid($formData) часть:

$dat = (new DateTime($form->getValue('datum')))->format('Y-m-d');

Этот oneliner преобразует дату из «дд-мм-гггг» в «гггг-мм-дд».

1

Другие решения

спасибо, после предложения отладки я изменил формат моей даты следующим образом: $test1=date('Y/m/d',strtotime($dat));

И теперь это работает!

0

По вопросам рекламы [email protected]