Есть в базе поле в виде timestamp (2011-08-03 17:11:38.288978).
Нужно его выпихнуть на форму через forms api.
Естественно такой кусок работает не так как мне надо.
$form['request_date'] = array(
'#title' => t('Дата Заявки'),
'#type' => 'date',
'#description' => t('Задайте дату заявки'),
'#default_value' => array(
'year' => $request ? format_date($request->request_date,'custom', 'Y') : format_date(time(), 'custom', 'Y'),
'month' => $request ? format_date($request->request_date,'custom', 'n') : format_date(time(), 'custom', 'n'),
'day' => $request ? format_date($request->request_date,'custom', 'j') : format_date(time(), 'custom', 'j'),
)
);
'#title' => t('Дата Заявки'),
'#type' => 'date',
'#description' => t('Задайте дату заявки'),
'#default_value' => array(
'year' => $request ? format_date($request->request_date,'custom', 'Y') : format_date(time(), 'custom', 'Y'),
'month' => $request ? format_date($request->request_date,'custom', 'n') : format_date(time(), 'custom', 'n'),
'day' => $request ? format_date($request->request_date,'custom', 'j') : format_date(time(), 'custom', 'j'),
)
);
На форму можно выложить как '#type' => 'date', так и '#type' => 'date_popup'.
Основная задача установить в этот контрол дату из базы.
Комментарии
2011-08-03 17:11:38.288978 это не timestamp
Это я просто так вывел
В базе оно
Table "public.journal_of_requests"
Column | Type | Modifiers
-------------------+-----------------------------+-------------------------------------------------------------------
request_date | timestamp without time zone | not null default now()
Или так
| Field | Type | Null | Key | Default | Extra |
+-------------------+------------------+------+-----+-------------------+----------------+
| request_date | timestamp | NO | | CURRENT_TIMESTAMP | |
$request я так понимаю это fetch результата запроса к БД, который ищет данное поле?
<?php
drupal_set_message('<pre>*ля: '. print_r($request->request_date, 1).'</pre>',status);
?>
выведите так
и опишите что значит работает не так как надо! Вроде стилистика верная.
Из postgresql
Из mysql
Не так как надо.
Это значит что вместо 2011-08-03 в контроле 'date' я получаю
месяц - январь
число - 1
год - 1970
Только это даёт какой-то вменяемый результат
(
[year] => 2011
[month] => 8
[day] => 3
[hour] => 11
[minute] => 28
[second] => 78
[fraction] =>
[warning_count] => 1
[warnings] => Array
(
[26] => The parsed time was invalid
)
[error_count] => 4
[errors] => Array
(
[13] => Unexpected data found.
[19] => Unexpected data found.
[22] => The separation symbol could not be found
[26] => Data missing
)
[is_localtime] =>
)
Допустим, одну проблему я решил так.
$form['request_date'] = array(
'#title' => t('Дата Заявки'),
'#type' => 'date',
'#description' => t('Задайте дату заявки'),
'#default_value' => array(
'year' => $request ? $request_date[year] : format_date(time(), 'custom', 'Y'),
'month' => $request ? $request_date[month] : format_date(time(), 'custom', 'n'),
'day' => $request ? $request_date[day] : format_date(time(), 'custom', 'j'),
)
);
Как теперь из того что будет изменено через контрол на форме сформировать timestamp, который можно будет запихать в базу?
У вас вообще не используется timestamp,
вы же сами показали вывод из запроса что у вас значение хранится в обычном формате date!
По идеи вам ничего менять не надо, Этот контрол должен так же в формате date запихать инфу в базу.
Если бы у вас был timestamp то вместо 2011-12-09 09:13:43 было бы 1323422023.