Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Даты (((
 
 автор: Sensygirl   (21.04.2010 в 14:31)   письмо автору
 
 

Добрый день! Может кому-то покажется что я говорю глупости :) В общем мне нужно в БД mysql в поле типа Date записать дату, которая выбирается на форме из календарика datepicker. Выбираю я скажем 01.04.2010. Если записывать выбранное значение как есть, в базе оказывается 2001-04-20.
Пробую форматировать функцией date('Y-m-d', $data) - ничего хорошего не получается.
Может кто-то подсказать как корректно записывать дату в базу?

  Ответить  
 
 автор: tihonko   (21.04.2010 в 15:07)   письмо автору
 
   для: Sensygirl   (21.04.2010 в 14:31)
 

MySQL дату нужно отправлять в формате yyyy-mm-dd, например 2010-04-01 (т.е. 1 апреля 2010)

<?php
//Допустим, в переменной $date хранится дата в формате dd.mm.yyyy, 
//например 01.04.2010 (т.е. 1 апреля 2010)
$date "01.04.2010";

//поместим день, месяц и год в отдельные переменные
list($day$month$year) = explode($date".");

//В переменную $mysql_date поместим дату в формате MySQL
$mysql_date $year."-".$month."-".$day;
?>


После этого в поле типа DATE записываете значение переменной $mysql_date

Функцией date() тут пользоваться бесполезно, потому что она в качестве второго аргумента принимает временную метку в UNIXSTAMP формате(т.е. количество секунд, прошедших с 1 января 1970 года ). Т.е. второй аргумент обязательно должен быть целым числом, а строку ("01.04.2010") в качестве второго аргумента передавать нельзя.

  Ответить  
 
 автор: Sensygirl   (21.04.2010 в 15:21)   письмо автору
 
   для: tihonko   (21.04.2010 в 15:07)
 

Результат такой же... в базу пишется 0000-00-00 (((((

  Ответить  
 
 автор: Sensygirl   (21.04.2010 в 15:32)   письмо автору
 
   для: tihonko   (21.04.2010 в 15:07)
 

А, там знаете че, у функции explode параметры наоборот идут - сначала разделитель, потом строка. Теперь все работает. Большое спасибо за подсказку! :)

  Ответить  
 
 автор: tihonko   (21.04.2010 в 15:57)   письмо автору
 
   для: Sensygirl   (21.04.2010 в 15:32)
 

Верно, я ошибся. Правильно вот так:

<?php
//поместим день, месяц и год в отдельные переменные
list($day$month$year) = explode("."$date);
?>

  Ответить  
 
 автор: DJ Paltus   (21.04.2010 в 15:10)   письмо автору
 
   для: Sensygirl   (21.04.2010 в 14:31)
 

Задайте формат дейтпикера, например

$(function(){
    $("#datepicker").datepicker({
        dateFormat: "yy-mm-dd"
        });
    });

  Ответить  
 
 автор: Sensygirl   (21.04.2010 в 15:35)   письмо автору
 
   для: DJ Paltus   (21.04.2010 в 15:10)
 

Хочется чтоб пользователь видел дату в привычном формате :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования