Как фильтровать поля Datatables по нескольким значениям?

Добрый день! Прошу подсказать, опишу кратко ситуацию:

Есть Datatables таблица с типовым serverside.php скриптом
Есть в таблице поля status со значениями 1,2,3,4,5 и mode со значениями 1,2,3
Есть на странице select multiple для status с опциями от 1 до 5 и ещё один для mode с опциями от 1 до 3.
Я хочу в селектах отметить галочками (использую jquery fSelect), например, статусы 1, 3, 5, и mode 2, 3, и чтоб таблица отфильтровалась таким образом. Как это сделать наиболее правильно?

Сейчас я это сделал костылём:
  • перебираю массив значений каждого select, составляю из них финальную строку фильтра mysql вроде
    " AND (status=1 OR status=2 OR status=3) AND (mode=2 OR mode=3)"
  • С помощью AJAX закидываю эту строку в суперглобальную переменную $_SESSION['filter'], которая уже приделана к строке mysql запроса в serverside.php, и вызываю datatable.draw()

Костыль работает идеально, и вообще реализация может даже проще правильной, но хочется узнать, а как сделать правильно, используя именно возможности datatables.
Надеюсь, разница не в том, чтобы банально передать в serverside.php значения собственных полей и составить точно такую же mysql строку уже там, а как-то хитрее.

Официальный пример фильтрует по нескольким полям, но по одному значению (или regex)
https://datatables.net/examples/api/regex.html
  • Вопрос задан
  • 291 просмотр
Пригласить эксперта
Ответы на вопрос 2
Loovery
@Loovery
Оптимист
status in (1,2,3) and mode in (2,3)
Ответ написан
Stalker_RED
@Stalker_RED
составляю из них финальную строку фильтра mysql ... с помощью AJAX закидываю эту строку
и даешь полный доступ к своей базе любому школьнику, ага?

Быстренько переделай так, чтобы передавать только номерки, а саму строку собирать уже на бэке.
При этом не забудь провкрку вводимых данных.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы