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

Discussion in 'Программирование' started by ---Zak---, Jan 13, 2011.

  1. Offline

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

    Joined:
    Nov 20, 2009
    Messages:
    14
    Likes Received:
    0
    Gender:
    Male
    Добрый день.
    У меня вот тут некий казус происходит с вводом даты в БД.

    Есть компонент, в котором есть поле "дата рождения". Запись происходит в поле по формату "%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 Недавно здесь => Cпециалист <=

    Joined:
    Jul 2, 2010
    Messages:
    263
    Likes Received:
    53
    Gender:
    Male
    Попробуйте применить функции 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
     
    Last edited: Jan 13, 2011
  4. Offline

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

    Joined:
    Nov 20, 2009
    Messages:
    14
    Likes Received:
    0
    Gender:
    Male
    С выводом из самой БД у меня все хорошо... это я сделал.

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

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

    vesy Недавно здесь => Cпециалист <=

    Joined:
    Jul 2, 2010
    Messages:
    263
    Likes Received:
    53
    Gender:
    Male
    Измените вот это %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--- Недавно здесь

    Joined:
    Nov 20, 2009
    Messages:
    14
    Likes Received:
    0
    Gender:
    Male
    В таком случае надо будет в самом поле забивать дату, если делать все руками, тоже в таком формате: "%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 Недавно здесь => Cпециалист <=

    Joined:
    Jul 2, 2010
    Messages:
    263
    Likes Received:
    53
    Gender:
    Male
    Код (CODE):
    1. <?
    2. $today = '03-04-2000';
    3. $tomorrow = strtotime($today);
    4. echo $today ." - ". date('Y-m-d', $tomorrow);
    5. ?>
     
    ---Zak--- likes this.
  8. Offline

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

    Joined:
    Nov 20, 2009
    Messages:
    14
    Likes Received:
    0
    Gender:
    Male
    Пасибки за помощь - все работает. У меня просто сейчас установлен PHP4 (по случайности установил - из старых дистибах) - попробовал в PHP5 - сработало =)
     

Share This Page

Loading...