Flex DateField и MySQL значение даты по умолчанию 0000-00-00 - PullRequest
0 голосов
/ 15 марта 2011

Я создал службу и callResponder (с помощью «Создать вызов службы» и «Создать форму» во Flash Builder 4), которые запрашивают в базе данных MySQL имя и дату рождения.

Моя проблема настолько проста, что, я думаю,Я не смог найти решение ...

Когда у меня пустая дата в MySQL (0000-00-00), мой привязанный DateField показывает 1899-11-30

Iперепробовал почти все возможное ... Пользовательская функция labelFunction, пользовательская функция, вызываемая сразу после вызова моей службы, чтобы попытаться обработать мои данные следующим образом ..:

protected function parseDate(date:Date):void
{
    if (date.getFullYear() == -1) {
        friendbirthdate.selectedDate = null;
    }   else {
        var df:DateFormatter = new DateFormatter;
        df.formatString = 'YYYY-MM-DD';
        friendbirthdate.selectedDate = date;
    }
}

К сожалению, это работает только частично.Когда я пытаюсь обновить эту же форму в базе данных, я отключаюсь.Я что-то здесь упускаю и буду очень признателен за совет или два: -)

СПАСИБО!

Ответы [ 2 ]

0 голосов
/ 16 марта 2011

Не знаю, поможет ли это кому-нибудь, но у меня возникли проблемы с вставкой значений из формы, содержащей DateField.Эта форма была создана с помощью инструмента Flash Builder Создать форму .

Проблема заключается в том, что служба, созданная Flash Builder, ожидает объект Date, независимо от того, что ... Если вы отправитеформа без выбора даты в DateField, вызов службы падает.

Давайте посмотрим на часть сгенерированного примера службы (функции Create и Update), мы видим, что PHP ожидает преобразования DateОбъект в строку, как это:

mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendlastname,  $item->friendbirth->toString('YYYY-MM-dd HH:mm:ss'));

Прежде всего, убедитесь, что ваше поле даты в MySQL имеет значение по умолчанию, равное NULL.

Затем измените функции создания и обновления следующим образом:

if ($item->friendbirth == null)
    $friendbirth = null;
else
    $friendbirth = $item->friendbirth->toString('yyyy-MM-dd HH:mm:ss');

mysqli_stmt_bind_param($stmt, 'sss', $item->friendname, $item->friendnickname, $friendbirth);

Таким образом, сценарий вызова службы не будет пытаться выполнить своего рода null-> toString ('...')

0 голосов
/ 16 марта 2011

Я рекомендую хранить NULL на неизвестные даты, в отличие от '0000-00-00'.NULL является более точным значением в этом случае.

Если вы хотите сохранить его как NULL и отобразить его как другое значение, вы можете сделать что-то вроде этого:

SELECT COALESCE(date_column,'0000-00-00') as formatted_date
FROM your_table
...