У меня проблемы с сохранением значений даты и времени. Я пробовал разные форматы, вот собственно попробуйте.
Валидатор в моей форме:
$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)
Читая ваши комментарии, я понимаю, что у вас есть две проблемы. Первый помещает дату в вашу таблицу, а второй позволяет пользователю использовать обычный формат даты (дд / мм / гггг).
Первая проблема решается, когда вы переформатируете пользовательский ввод перед тем, как поместить его в базу данных. Вы можете добавить следующую строку в $form->isValid($formData)
часть:
$dat = (new DateTime($form->getValue('datum')))->format('Y-m-d');
Этот oneliner преобразует дату из «дд-мм-гггг» в «гггг-мм-дд».
спасибо, после предложения отладки я изменил формат моей даты следующим образом: $test1=date('Y/m/d',strtotime($dat));
И теперь это работает!