Cheizer
@Cheizer

Как на php отфильтровать результат по диапазону из двух дат?

Подскажите, как правильно написать проверку на PHP что бы результат вернул правильный ответ.

//есть некая запись в базе с датой начала мероприятия и датой конца, начало с 06.10.2020 по 09.11.2020

//юзер на сайте с формы фильтрации выбрал
if($_GET['dateFrom']) {
    $filter[] = 'dateFrom>="'.$_GET['dateFrom'].'"';  //дата начала 05.10.2020
}
if($_GET['dateTo']) {
    $filter[] = 'dateTo<="'.$_GET['dateTo'].'"';  //дата конца 10.11.2020
}
//делаем JSON массив
if($filter) {
	$where = $modx->toJSON(array($filter));
} else {
	$where = '';
}

//запрос к базе через API CMS
$params = array(
	'select' => 'id,pagetitle,introtext,content',
	'where' => $where  
);
//результат с помощью снипета pdoPage
return $modx->runSnippet('pdoPage',$params);


Вопрос, как написать проверку в этом месте
$filter[] = 'dateFrom>="'.$_GET['dateFrom'].'"';
 $filter[] = 'dateTo<="'.$_GET['dateTo'].'"';  //дата конца 10.11.2020
так, что бы если даты мероприятия попадали в середину диапазона дат запроса, или одна из двух да, то тоже попадали в результат запроса?
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
MKE
@MKE
PHP, JS, MySQL, HTML, CSS
Попробуйте вместо этого:
//запрос к базе через API CMS
$params = array(
  'select' => 'id,pagetitle,introtext,content',
  'where' => $where  
);

Написать так:
//запрос к базе через API CMS
$params = array(
  'select' => 'id,pagetitle,introtext,content',
  'where' => 'dateFrom >= '.date($_GET['dateFrom']).' OR dateTo <= '.date($_GET['dateTo'])
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы