Php 在数据库中保存日期和时间格式时遇到问题
保存日期和时间值时遇到问题。我尝试了不同的格式,这里是实际的尝试 我的表单中的验证程序:Php 在数据库中保存日期和时间格式时遇到问题,php,zend-framework,zend-validate,Php,Zend Framework,Zend Validate,保存日期和时间值时遇到问题。我尝试了不同的格式,这里是实际的尝试 我的表单中的验证程序: $datum=$this->CreateElement('text','datum') ->setAttrib('size', '10') ->addValidator(New Zend_Validate_Date('MM-DD-YYYY')); $zeit=$this->CreateElement('
$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);
还有,我的数据库类中的add函数:
public function addTermine($kopfnr, $datum, $zeit, $thema)
{
$data = array(
'kopfnr' => $kopfnr,
'datum' => $datum,
'zeit' => $zeit,
'thema' => $thema,
);
$this->insert($data);
}
我正在WAMP安装中使用mySQL数据库
我的错误在哪里?作为我想说的一句话,我得到了一个新记录,“thema”的值和键被正确保存,所以我想它一定是某种格式的东西
编辑:我得到一条新记录,但日期和时间字段为空。我没有错误
新增:我在控制器中添加了一个调试测试,以查看日期值的结果,以下是答案:
字符串“01-04-2016”(长度=10)
(我输入了2016年4月1日)通过阅读您的评论,我了解到您有两个问题。第一个是将日期放入表中,第二个是让用户使用正常的日期格式(dd/mm/yyyy) 将用户输入重新格式化后再放入数据库时,第一个问题就解决了。您可以将以下行添加到
$form->isValid($formData)
部分:
$dat = (new DateTime($form->getValue('datum')))->format('Y-m-d');
此oneliner将日期从“dd-mm-yyyy”转换为“yyy-mm-dd”。谢谢,在建议调试后,我更改了日期格式如下:
$test1=date('Y/m/d',strotime($dat))代码>
现在它工作了 啊哈,如果我尝试使用phpmyadmin接受的格式来确定日期,那么它就会正常工作:2015-04-15。有没有一个简单的方法来解决这个日期验证程序的问题?你的问题到底是什么?您是否有错误消息或例外结果?请添加关于哪些不起作用的更多信息(在您的问题中,使用edit
)您是否尝试将新的Zend_Validate_Date('MM-DD-YYYY')更改为Zend_Validate_Date('YYYY-MM-DD')?是的,我已经尝试过了,但我希望用户使用另一种格式,例如DD-MM-YYYYYY。我尝试了两种更改,在我的formclass中,我这样更改了验证器:->addValidator(newZend_Validate_Date('DD-MM-YYYY');我在控制器中按照你的建议改变了。但它不起作用。它只有在我有mySQL这样的验证器时才有效:YYYY-MM-DD.Hi@pia-sophie,所以表单接受用户提供的DD-MM-YYYY格式,但在进入数据库之前仍然没有转换?您能否使用print\r
打印$data
对象并将其放入您的问题中?