Joomla 1.5 Как записать дату %d-%m-%Y в Базу Данных

Тема в разделе "Программирование", создана пользователем ---Zak---, 13.01.2011.

  1. Offline

    ---Zak--- Недавно здесь

    Регистрация:
    20.11.2009
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    Добрый день.
    У меня вот тут некий казус происходит с вводом даты в БД.

    Есть компонент, в котором есть поле "дата рождения". Запись происходит в поле по формату "%d-%m-%Y"
    Код (PHP):
    1. <? echo JHTML::_('calendar', $this->hello->DATAROST, 'DATAROST', 'DATAROST', '%d-%m-%Y', array('class'=>'inputbox', 'size'=>'8',  'maxlength'=>'19')); ?>

    Удобно это тем, что пользователи привыкли забивать дату в таком формате + дата рождения в паспорте так записывается.

    В БД есть поле:
    Код (PHP):
    1. REGDATA     date     0000-00-00


    Вывод инфы в поле с помощью календарика срабатывает на ура, но вот при записи в БД дата теряется, т.к. MySQL не понимает этот формат.

    Не спасает
    Код (PHP):
    1. $data['REGDATA'] = JHTML::_('date', $data['REGDATA'], JText::_('%Y-%M-%D'));

    т.к. он только с маской "0000-00-00" работает.

    Помогите плиз...
     
  2.  
  3. vesy
    Offline

    vesy специалист

    Регистрация:
    02.07.2010
    Сообщения:
    263
    Симпатии:
    53
    Пол:
    Мужской
    Попробуйте применить функции date() и strtotime().
    Код (CODE):
    1. <? echo JHTML::_('calendar', $this->hello->DATAROST, 'DATAROST', 'DATAROST', '%Y-%M-%D', array('class'=>'inputbox', 'size'=>'8',  'maxlength'=>'19')); ?>

    Потом, когда вытягиваете из БД, то
    Код (CODE):
    1. $myDate = strtotime($dateDb); // $dateDb - переменная, которая содержит дату из БД
    2. $newDate = ('d.m.Y', $myDate); // Преобразование даты в формат d.m.Y
     
    Последнее редактирование: 13.01.2011
  4. Offline

    ---Zak--- Недавно здесь

    Регистрация:
    20.11.2009
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    С выводом из самой БД у меня все хорошо... это я сделал.

    А вот как сделать обратно ???
    У меня есть поле, в котором записывается дата в формате "03-04-2000" - как такую дату записать в базу, если в самой базе можно записывать "2000-04-03" ?

    ЗЫ: из "2000-04-03" в "03-04-2000" я могу сделать, а обратно не получается.
     
  5. vesy
    Offline

    vesy специалист

    Регистрация:
    02.07.2010
    Сообщения:
    263
    Симпатии:
    53
    Пол:
    Мужской
    Измените вот это %Y-%M-%D
    Код (CODE):
    1. <? echo JHTML::_('calendar', $this->hello->DATAROST, 'DATAROST', 'DATAROST', '%Y-%M-%D', array('class'=>'inputbox', 'size'=>'8', 'maxlength'=>'19')); ?>
     
  6. Offline

    ---Zak--- Недавно здесь

    Регистрация:
    20.11.2009
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    В таком случае надо будет в самом поле забивать дату, если делать все руками, тоже в таком формате: "%Y-%M-%D"
    А это не привычно и не совсем удобно =(((

    Вот почему скрипт не срабатывает ???
    Код (PHP):
    1. <?
    2. $today = '03-04-2000';
    3. $tomorrow = strtotime(0, strtotime($today));
    4. echo $today ." - ". date('Y-m-d', $tomorrow);
    5. ?>


    Результат:
     
  7. vesy
    Offline

    vesy специалист

    Регистрация:
    02.07.2010
    Сообщения:
    263
    Симпатии:
    53
    Пол:
    Мужской
    Код (CODE):
    1. <?
    2. $today = '03-04-2000';
    3. $tomorrow = strtotime($today);
    4. echo $today ." - ". date('Y-m-d', $tomorrow);
    5. ?>
     
    ---Zak--- нравится это.
  8. Offline

    ---Zak--- Недавно здесь

    Регистрация:
    20.11.2009
    Сообщения:
    14
    Симпатии:
    0
    Пол:
    Мужской
    Пасибки за помощь - все работает. У меня просто сейчас установлен PHP4 (по случайности установил - из старых дистибах) - попробовал в PHP5 - сработало =)
     

Поделиться этой страницей

Загрузка...