Доброго времени суток уважаемые форумчане!Вопрос мой заключается вот в чём. Я довольно давно занимаюсь простенькой разработкой WEB приложений и сайтов на php и всегда пытаюсь что-либо делать по другому и усовершенствовать свой код, сделать его более правильным и функциональным. Сейчас делая очередной проект меня посетила идея об изменении принципа пагинации. Как обычно происходила пагинация в моих проектах?
1. Был обычный запрос в базу данных с количеством записей, делился на количество записей на странице и формировалось общее количество ссылок на страницы
2. Ссылки с переходом по GET на другие страницы передавали номер страницы для дальнейшего запроса в базу и среза offset, после чего выдавал новый срез данных и формировались страницы.
Всё просто до безобразия.
Но тут мне понадобилось сделать различные фильтры и поиск по всем(или определённым) полям, необходимой информации и динамически выводить это всё в таблицу. С этим проблем не возникло:
1. JS отслеживал ввод в поле поиска, селекты и выбор дат. Проверял все эти параметры в совокупности и отправлял через AJAX к PHP файлу
2. В PHP фале формировалось два запроса, первый был со всеми фильтрами и критериями поиска на количество записей, а второй с теми же критериями поиска, но с offset.
Данные в таблице успешно заполнялись, ссылки формировались, но при поиске или фильтрации я заполнял таблицу через innerHTML и вариантов добавить пагинацию не было, так как заполнялся один только id, а пагинация была в другом id. Соответственно пагинация не обновлялась. Было решено заносить данные для пагинации в сессии, но они срабатывали только после перехода или при перезагрузке страницы. В общем всё это выглядело довольно-таки коряво. Я задумался, ведь я видел, как на многих сайтах страницы меняют содержимое при пагинации без перезагрузки. Начал копать в этом направлении и понял что в большинстве случаев, осуществляется полная загрузка данных в память, а далее просто js нарезается по странично. Если честно я сомневаюсь в разумности данного подхода, ведь если взять те же смартфоны и скажем таблицу из 1 миллиона строк, то загрузив это всё разом, всё будет ужасно тормозить. Всё-таки это огромный объём данных, который пусть сразу и не выводится на страницу, но хранится в памяти в виде массива данных.
Начал искать другие способы и наткнулся что сейчас многое делается на node.js + vue.js или react.js. Начал смотреть более подробно что за зверь такой этот node.js и везде русским по белому написано что это фактически замена любому серверному языку вроде php, python, perl, ruby и прочим. Тогда у меня появляется разумный(как мне кажется) вопрос, неужели нельзя создать динамическую пагинацию страниц без перезагрузки страницы на php+js без использования node.js? Или задумываясь об отзывчивых динамических интерфейсах уже нет речи о php и теперь нужно переучиваться на node.js?