drupal - 将日期数组保存到数据库

标签 drupal date drupal-6 drupal-fapi

所以,我的表单中有这个元素:

<?php
$form['order']['date'] = array(
        '#type'          => 'date',
        '#title'         => 'Order date',
      );

在表单提交函数中我得到了这样的数组:

[values] => Array
    (
        [date] => Array
            (
                [year] => 2010
                [month] => 11
                [day] => 27
            )
    )

我正在寻找一种将此数组保存在数据库中的简单方法,然后我希望能够从数据库中提取此日期,以便将其替换回编辑表单中。

是否有用于此的 drupal api 函数?

最佳答案

我认为 Date 模块将为您提供 API 调用来执行此操作。

在我的例子中,我的要求相当简单,我不想创建额外的模块依赖项,所以我使用以下内容来形成一个 PHP DateTime 对象:

$date_arr = $form_state['values']['date'];
if ($date_arr['year'] && $date_arr['month'] && $date_arr['day']) {
  $date = new DateTime();
  $date->setDate($date_arr['year'], $date_arr['month'], $date_arr['day']);
} else {
  $date = NULL;
}

为了存储在数据库中(作为 UNIX 时间戳,Drupal 约定),我使用了 $date->getTimestamp()。

我不需要将日期放回到表格中,但如果需要,我会尝试类似的方法:

$query = db_query("select mydate from table");
while ($fields = db_fetch_array($query)) {
  $date = new DateTime();
  $date->setTimestamp($fields[0]);
  $form['order']['date'] = array(
    '#type'          => 'date',
    '#title'         => 'Order date',
    '#default_value' => array(
      year  => $date->format('Y'),
      month => $date->format('m'),
      day   => $date->format('d'),
    ),
  );
}

我还没有对此进行测试,因此您需要进行试验。

希望这对您有所帮助!

关于drupal - 将日期数组保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4291861/

相关文章:

mysql - 只选择昨天的日期,日期格式很奇怪

匹配 mm/dd/yyyy 格式的 JavaScript 正则表达式 - 仅限于数字输入

php - 以编程方式在 Drupal 6 中创建带有字段的新内容类型

mysql - 查询帮助;我需要一个子查询吗?

jquery - Drupal 8 模块 - 如何使用 AJAX?

PHP 幻灯片无法在 Internet Explorer 上运行

drupal 获取节点的术语列表

php - 从看门狗将值插入到表中

php - 如何从Mysql获取两个特定日期之间的数据

Drupal 6.x 添加更多模块 - 添加更多