Форум русской поддержки Joomla!® CMS
09.12.2016, 00:07:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Фильтр по дате

 (Прочитано 426 раз)
0 Пользователей и 1 Гость смотрят эту тему.
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« : 06.07.2015, 13:01:59 »

Добрый день!
Хочу сделать фильтр по дате!
Написал запрос:
$dateFilterOUT = strtotime($dateFilterOUT);
$data_array = $db->setQuery("SELECT * FROM #__sr_reservations WHERE (created_by = $userid) AND (created_date >= $dateFilterIn) ORDER BY ID DESC")->loadObjectList();

Есть дата 07.06.2015
$dateFilterOUT = 07.06.2015
я преобразую в формат даты
$dateFilterOUT = strtotime($dateFilterOUT);
Далее хочу получить все записи у которых поле created_date (в формате datetime) выше данной даты. Но ничего не происходит выдаются данные за весь период. Подскажите, я не профессионал, в чем может быть проблема?
Записан
Aleks.Denezh
Практически профи
*******

Репутация: +372/-4
Offline Offline

Пол: Мужской
Сообщений: 2762



« Ответ #1 : 06.07.2015, 13:18:47 »

1. Вы пробовали сделать echo текста вашего запроса?
2. В created_date  дата хранится в UNIX формате или все же формат даты: ГГГГ-ММ-ДД ЧЧ:ММ:СС? если в том что я написал то вы пытаетесь сравнить юникс дату с обычной, а юникс дата это просто число например текущее время это такая цифра - 1436174274 )!
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #2 : 06.07.2015, 13:36:09 »

В created_date  дата хранится в 0000-00-00 00:00:00. Я так понимаю $dateFilterOUT в UNIX формате, т.е. мне нужно перевести created_date в UNIX?
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #3 : 06.07.2015, 13:46:03 »

Сделал следующее:
$dateFilterIn = date("Y-m-d H:i:s", strtotime($dateFilterIn));

Но тогда выдает ошибку:
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '00:00:00) ORDER BY ID DESC' at line 1 SQL=SELECT * FROM gx26f_sr_reservations WHERE (created_by = 321) AND (created_date >= 2015-06-07 00:00:00) ORDER BY ID DESC
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #4 : 06.07.2015, 13:49:45 »

echo делал.
Значит если без сравнения дат, то выдает полную таблицу за весь период
Вставляю сравнение дат, опять выдает всю таблицу за полный период
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #5 : 06.07.2015, 13:50:41 »

сделайте экранирование кавычек в запросе
Код
$data_array = $db->setQuery("SELECT * FROM #__sr_reservations WHERE (created_by = $userid) AND (created_date >= mysql_real_escape_string($dateFilterIn)) ORDER BY ID DESC")->loadObjectList();
Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #6 : 06.07.2015, 14:04:22 »

Где инициализация $dateFilterIn? С чем сравниваете?
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #7 : 06.07.2015, 14:20:07 »

 
$dateFilterIn = strtotime($dateFilterIn);
$data_array = $db->setQuery("SELECT * FROM #__sr_reservations WHERE (created_by = $userid) AND (created_date >= mysql_real_escape_string($dateFilterIn)) ORDER BY ID DESC")->loadObjectList();

выдает ошибку:
#1305 FUNCTION bron.mysql_real_escape_string does not exist SQL=SELECT * FROM gx26f_sr_reservations WHERE (created_by = 321) AND (created_date >= mysql_real_escape_string(1430168400)) ORDER BY ID DESC

Если
$dateFilterIn = date("Y-m-d h:i:s", strtotime($dateFilterIn));
$data_array = $db->setQuery("SELECT * FROM #__sr_reservations WHERE (created_by = $userid) AND (created_date >= mysql_real_escape_string($dateFilterIn)) ORDER BY ID DESC")->loadObjectList();

выдает ошибку:
#1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '12:00:00)) ORDER BY ID DESC' at line 1 SQL=SELECT * FROM gx26f_sr_reservations WHERE (created_by = 321) AND (created_date >= mysql_real_escape_string(2015-03-30 12:00:00)) ORDER BY ID DESC
Записан
passer
Живу я здесь
******

Репутация: +69/-3
Offline Offline

Пол: Мужской
Сообщений: 829



« Ответ #8 : 06.07.2015, 14:45:22 »

Ну так попробуйте.
Код
$dateFilterOUT = '07.06.2015';		
$dateFilterOUT = JFactory::getDate($dateFilterOUT);
$data_array = $db->setQuery("SELECT * FROM  #__sr_reservations WHERE (created_by = ".$userid.") AND (created_date >= CONVERT('".$dateFilterOUT->date."', DATETIME)) ORDER BY ID DESC")->loadObjectList();
var_dump($data_array);
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #9 : 06.07.2015, 15:12:44 »

Выдает ошибку, скорее всего что-то не нравится с кавычками, но попробовал разные варианты -  все равно ошибка... Так не хочется IF использовать... Sad
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #10 : 06.07.2015, 15:21:59 »

Код
$dateFilterIn=date('Y-m-d H:i:s',strtotime($dateFilterIn));
$data_array=$db->setQuery('SELECT * FROM #__sr_reservations WHERE (created_by="'.$userid.'") AND (created_date>="'.$dateFilterIn.'") ORDER BY ID DESC')->loadObjectList();
 
Записан
SimonovSergey
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 51


« Ответ #11 : 06.07.2015, 15:31:29 »

Всем спасибо! Разобрался, просто ступил!
в запросе надо было '$dateFilterIn' в кавычки поставить...
Записан
beliyadm
Профи
********

Репутация: +1566/-61
Offline Offline

Пол: Мужской
Сообщений: 8110


Севастополь == Россия


« Ответ #12 : 07.07.2015, 01:12:10 »

а я ведь еде давно говорил про кавычки, это первый момент, о котором надо думать при запросах
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet