pdoPage и where, как отфильтровать по дате
Здравствуйте сообщество Модекс, У меня вопрос на помощь:
Как правельно создать запрос на фильтр данных в pdoPage чтобы выбрать все записи за определенный период времени?
пробую перейти на ajax выборку:
Пробовал написать сниппет с параметрами дат, что опять же работает только при обыкновенной выборке но не по периоду значений. Даты в базе DATETIME не в Unix формате.
Вопрос к сообществу:
1. Как правельно необходимо построить запрос?
если мне необходимо реализовать сортировку «на лету» как правельно реализовать динамику изменения дат и вывод оезультатов?
2. При вызове pdoPage, в ajax как мне вывести пагинацию если я поставил лимит?
Как правельно создать запрос на фильтр данных в pdoPage чтобы выбрать все записи за определенный период времени?
пробую перейти на ajax выборку:
if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}
// Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
// Если в массиве POST нет действия - выход
if (empty($_POST['action'])) {return;}
// А если есть - работаем
$res = '';
switch ($_POST['action']) {
case 'test':
$res = 'Hello World!';
break;
// А вот сюда потом добавлять новые методы
case 'all-jobs':
$params = array();
$params['class'] = 'Jobs';
$datestart = "2015-05-25"; // здесь я буду постом обнавлять данные
$dateend = "2015-06-01"; // здесь я буду постом обнавлять данные
$params['tpl'] = 'jobs.main.tpl';
$params['element'] = 'getTablesInfo';
$params['limit'] = '7';
$params['where'] = '{"date_created:>=":$datestart, "date_created:<=":$dateend}'; // этот костыль не работает
$params['sortby'] = '{"date_created":"DESC"}';
$res = $modx->runSnippet('pdoPage', $params);
break;
}
// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
die($res);
}
Код брался из Открытого источника. Перерыл много материала, много подчеркнул для себя но практически ничего по моей проблеме. Если сделать запрос без выборки where то данные проходят и возвращаются значения, сделать выборку не получается.Пробовал написать сниппет с параметрами дат, что опять же работает только при обыкновенной выборке но не по периоду значений. Даты в базе DATETIME не в Unix формате.
Вопрос к сообществу:
1. Как правельно необходимо построить запрос?
если мне необходимо реализовать сортировку «на лету» как правельно реализовать динамику изменения дат и вывод оезультатов?
2. При вызове pdoPage, в ajax как мне вывести пагинацию если я поставил лимит?
Комментарии: 2
Для начала вам придется преобразовывать каждую дату в Unix-формат, после чего через where сравнивать его с требуемым диапазоном дат в том же Unix-формате (в противном случае произвести сравнение методами «больше»/«меньше» вряд ли удастся.
Честно говоря, не уверен, что такой метод будет работать: не совсем понятно, что сработает раньше — аякс-пагинация pdoTools или ваша выборка where — и не перезапишет ли один результат другой.
Можете попробовать удалить из системных настроек вложенные скрипты pdoPage для ajax'a и написать свой, с параллельной проверкой where и заданной страницы.
А вообще, модуль mfilter2 лишил бы вас множества проблем в этой области — он отлично дружит с pdoPage и делает перерасчет на лету.
Честно говоря, не уверен, что такой метод будет работать: не совсем понятно, что сработает раньше — аякс-пагинация pdoTools или ваша выборка where — и не перезапишет ли один результат другой.
Можете попробовать удалить из системных настроек вложенные скрипты pdoPage для ajax'a и написать свой, с параллельной проверкой where и заданной страницы.
А вообще, модуль mfilter2 лишил бы вас множества проблем в этой области — он отлично дружит с pdoPage и делает перерасчет на лету.
Вот почитайте.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.