在我的数据库中保存日期和时间格式的麻烦

时间:2015-04-19 13:32:35

标签: php zend-framework zend-validate

我无法保存日期和时间值。我尝试了不同的格式,这里是实际尝试。

我的表单中的

验证器:

 $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')));

我的Controller 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”的值和键被正确保存,所以我认为它必须是某种格式的东西。

编辑:我收到了新记录,但字段的日期和时间都是空的。我没有错误

新:我在我的控制器中添加了一个调试测试,看看日期值是什么,这是答案:

string '01 -04-2016'(长度= 10) (我在2016年4月1日投入)

2 个答案:

答案 0 :(得分:1)

通过阅读你的评论,我知道你有两个问题。第一个是将日期放入表中,第二个是让用户使用正常的日期格式(dd / mm / yyyy)。

在将用户输入放入数据库之前重新格式化用户输入时,第一个问题就解决了。您可以将以下行添加到$form->isValid($formData)部分:

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

此oneliner会将日期从'dd-mm-yyyy'转换为'yyyy-mm-dd'。

答案 1 :(得分:0)

谢谢,在调试建议之后我更改了我的日期格式,如下所示:$test1=date('Y/m/d',strtotime($dat));

现在它有效!