Joomla 1.5 Формат и ввод даты в интегрированном календаре

Тема в разделе "Создание расширений для Joomla", создана пользователем FeaMor, 21.02.2010.

  1. FeaMor
    Offline

    FeaMor Пользователь

    Регистрация:
    01.09.2008
    Сообщения:
    104
    Симпатии:
    2
    Пол:
    Мужской
    Создаю свой компонент, где ведется поиск информации в базе данных во временном интервале (от одной даты до другой)
    использую следующий код:
    Код (PHP):
    1. JHTML::_('behavior.calendar');
    2.  
    3. $fromdate = JRequest::getVar('fromdate', date("Y-m-d"));
    4.  
    5. $todate = JRequest::getVar('todate', date("Y-m-d"));
    6.  
    7. echo '<form action="index.php?option=com_mycomp" method="post" name="SetDate">';
    8.  
    9. echo 'Установите интервал между датами с ';
    10.  
    11. echo JHTML::_('calendar', $fromdate, 'fromdate', 'fromdate', '%Y-%m-%d', array('class'=>'inputbox',
    12.  'size'=>'20', 'maxlength'=>'19'));
    13.  
    14. echo ' по '.JHTML::_('calendar', $todate, 'todate', 'todate', '%Y-%m-%d', array('class'=>'inputbox',
    15.  'size'=>'20',  'maxlength'=>'19'));
    16.  
    17. echo ' <input type="button" value="Установить" class="diary-button" onclick="form.submit()" />';
    18.  
    19. echo '</form>';
    20.  
    21. echo '<p>Выбранный интервал проссмотра данных с <span class="cm_date_head">'.JHTML::_('date',
    22.  $fromdate, JText::_('%d %B %Y')).'</span> по <span class="cm_date_head">'.JHTML::_('date',
    23.  $todate, JText::_('%d %B %Y')).'</span></p>';

    но получилось так, что пользователи могут писать в поле INPUT, которое само формируется посредствами джумлы, все, что угодно. Временно добавил в array параметр 'readonly'=>'readonly':
    Код (PHP):
    1. JHTML::_('calendar', $fromdate, 'fromdate', 'fromdate', '%Y-%m-%d', array('class'=>'inputbox',
    2.  'size'=>'20', 'maxlength'=>'19', 'readonly'=>'readonly'))

    Появилось несколько вопросов:
    1) Как сделать так, чтобы в поле INPUT нельзя было ничего вводить, кроме цифр?
    2) Как полностью обезопасить поле INPUT от всяких sql-инъекций и т.п.?
    3) Как сделать так, чтобы в поле INPUT отображалась дата в формате "21 февраля 2010", а переменной $fromdate присваивалось значение "2010-02-21"? Мне приходится отдельно выводить ниже значение переменной в красивом формате так:
    Код (PHP):
    1. JHTML::_('date', $fromdate, JText::_('%d %B %Y'))

    Проблема в том, что когда пишу изначально
    Код (PHP):
    1. JHTML::_('calendar', $fromdate, 'fromdate', 'fromdate', '%d %B %Y', array('class'=>'inputbox',
    2.  'size'=>'20',  'maxlength'=>'19'))
    , то и в переменную $fromdate записывается дата типа "21 февраля 2010", что не дает мне ее использовать по назначению в поиске в базе данных, т.к. там формат даты "2010-02-21". Я бы конечно мог разбить дату на составляющие, перевести "февраль" в цифру "2" и поменять все местами, но боюсь этого делать, т.к. думаю, что есть проще какой-нить вариант...

    Помогите пожалуйста разобраться с этими тремя вопросами!
     
    Последнее редактирование: 21.02.2010
  2.  
  3. FeaMor
    Offline

    FeaMor Пользователь

    Регистрация:
    01.09.2008
    Сообщения:
    104
    Симпатии:
    2
    Пол:
    Мужской
    Да, я еще покапался в админке, там где статья добавляется, ей дата присваивается и нашел интересный код:
    Код (PHP):
    1. $config =& JFactory::getConfig();
    2. $publish_up =& JFactory::getDate($this->article->publish_up);
    3. $publish_up->setOffset($config->getValue('config.offset'));
    4. $publish_up = $publish_up->toFormat();

    сам не знаю, что она означает, но переменная $publish_up именно хранит дату создания. Может это и есть какая-нить проверка на взлом?!
     
  4. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    для работы с ДОМ-элементами пхп, как бы сказать, не очень подходит ) Рекомендую взглянуть в сторону JS , а точнее тут.
     
  5. FeaMor
    Offline

    FeaMor Пользователь

    Регистрация:
    01.09.2008
    Сообщения:
    104
    Симпатии:
    2
    Пол:
    Мужской
    Да, работа с jQuery безусловно интересна, но это не есть ответы на вопросы ((
     

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

Загрузка...