Здравствуйте.
Включил модуль Profile, для расширения вводимых данных при регистрации.
Из за того, что данные зарегистрированных пользователей разбросаны по двум таблицам: users и profile_values, а в profile_values данные вообще не структурированные, решил создать отдельную таблицу и собрать туда нужные данные из users и profile_values.
Три строчки кода в функции profile_save_profile() и все получилось как надо. Но вот дата рождения ни как не хочет сохранятся в поле с типом DATE
Во запрос который я делаю в базу данных:
Обращаю внимание на VALUES ('YYYY-MM-DD')
в результате выполнения поле с типом Date игнорируется, как будто его вообще и нет, а дата записывается в следующее поле в виде вот такой записи:
a:3:{s:3:"day";s:1:"6";s:5:"month";s:1:"9";s:4:"year";s:4:"2011";}
Подскажите, как сохранить дату в таком виде, в поле с типом DATE? или может быть с другим типом, но с нормальным отображением даты в поле.
Комментарии
Подымаю вопрос. Помогите решить задачу с датой.
Этот формат называется JSON.
Присмотритесь к этой строке:
a:3:{s:3:"day";s:1:"6";s:5:"month";s:1:"9";s:4:"year";s:4:"2011";}
То есть дата сохранилась.
Если навороченная сортировка по дате не нужна, может быть и этот формат записи подойдет?
Спасибо за ответ.
В том то и дело, что хотелось бы сделать нормально читаемые данные о пользователе, ну и дату в легко читаемом виде, а не в таком как она сейчас сохраняется.
Подскажите как конвертировать может какой нибудь функцией php или запросом sql, что бы сохранить дату?
Выше я написал, что формат называется JSON. Нужно его конвертировать с помощью PHP. Значит вводим в гугле "json php" и первая же ссылка ведет на php.net
http://php.net/manual/en/book.json.php
http://www.php.net/manual/en/function.json-encode.php кодирует в json.
А http://www.php.net/manual/en/function.json-decode.php преобразует обратно в массив
А вот в mysql вроде бы функции работы с json нет. Или я не нашел
Этот формат называется сериализованный массив, JSON проще
Есть, что нибудь для вот такой операции?
$json = 'a:3:{s:3:"day";s:1:"6";s:5:"month";s:1:"9";s:4:"year";s:4:"2011";}';
что_нибудь($json)
//return str05-09-2011
Хотя бы строку с датой, что бы вернуло
Тогда можно будет в поле varchar или text сохранить
Если это сериализованный массив, то http://www.php.net/manual/en/function.unserialize.php
$array = unserialize ('a:3:{s:3:"day";s:1:"6";s:5:"month";s:1:"9";s:4:"year";s:4:"2011";}');
Вот, что вышло:
$name_1[] = unserialize($array_name[3]);
print_r($name_1);
Array ( [0] => Array ( [day] => 6 [month] => 9 [year] => 2011 ) )
Спасибо за помощь!
Проблем решена )
$name_1[] = unserialize($array_name[3]);
$date_1 = $name_1["0"]["day"].'-';
$date_1 .= $name_1["0"]["month"].'-';
$date_1 .= $name_1["0"]["year"];