parser


 

 
   команды управления поиском

Форматирование дат и БД

Maxx 20.03.2008 01:45 / 20.03.2008 02:06

Исходя из того, что вы говорит про "добавление" новостей и про то что "получается в БД" попробую предположить, что вы не знаете как дату преобразовать обратно, чтобы добавить ее в БД корректно.

Есть разные способы.
1. раскладваете поля даты по разным инпутам, а при обработке формы склеиваете их в объект.
2. делаете один input в который кладете форматированную дату, а при обработке разбираете ее на составляющие, конструируте объект
3. ну можно еще js-ом генерить hidden поля - но это лесом.

1.
^rem{$date - объект класса date (либо из базы, либо ^date::now[])}
<form name=''>
  <input name='do' value='send' type='hidden' />
  Дата: <input name='day' type='text' value='^date.day.format[%02d]' />.
  <input name='month' type='text' value='^date.month.format[%02d]' />.
  <input name='year' type='text' value='$date.year' />
  ..............
</form>
^if($form:do eq send){
   $dSendToDB[^date::create($form:year;$form:month;$form:day)]
   ^connect[sql]{
      INSERT INTO table
      SET date = '^dSendToDB.sql-string[]'
      .......
   }
}
2.
^rem{$date - объект класса date (либо из базы, либо ^date::now[])}
<form name=''>
  <input name='do' value='send' type='hidden' />
  Дата: <input 
         name='date' type='text' 
         value='^date.day.format[%02d]-^date.month.format[%02d]-${date.year}' 
        />
  ..............
</form>
^if($form.do eq send){
   ^form:date.match[(\d+)-(\d+)-(\d+)][]{
      $day($match.1)
      $month($match.2)
      $year($match.3)
   }
   $dSendToDB[^date::create($year;$month;$day)]
   ^connect[sql]{
      INSERT INTO table
      SET date = '^dSendToDB.sql-string[]'
      .......
   }
}
Пример не претендует на точность и полноту, просто хотел показать принцип
В частности в данном случае можно использовать не match, а split. Запросы делать через класс на подобии Мишиного sql.p и т.п. Дальше сами