Привет Хабр и всем кто использует PHP фреймворк CodeIgniter!
В процессе создания некого приложения на CI у меня возник вопрос о поиске информации в базе данных без использования GET.
Никаких готовых решений в CI wiki я не нашел, так что решил сделать свой «велосипед».
Для начала рассмотрим примеры ссылок которые мы можем видеть при поиске на разных сайтах:
Пример ссылок передачи параметров через GET
Еще пример:
Если ищем по одному параметру то ссылка выглядит более или менее нормально
Но если нам нужно искать что-то например по 5 или больше параметрах?
Вот тогда наша ссылка истановится ужасной заставляет нас искать другое решение.
Пример ссылок передачи параметров через POST (пока одна только =) )
Собственно в такой ссылке нет никаких параметров для поиска,
только идентификатор уже сохраненного в кеше результата поиска.
Если мы будем передавать параметры через массив POST то наша ссылка будеть иметь
почти одинаковый вид при разных входящих параметрах поиска. Осталось только решить
«проблемы и сложности» подобного метода поиска.
Для решения нам понадобится CI + «любой класс кеширования» и немного времени.
И так, как же будет работать наша система:
1. Нужно создать уникальный ключ для сохранения результатов поиска в кеше.
(ссылка для просмотра результатов поиска будет выглядеть примерно так:
sitename/search/query/7ad549053bf2be45f309920b7b6a24bf/10)
2. Сделать запрос к базе данных.
3. Сохранить результат в кеше.
4. Вывести результат поиска пользователю.
Хотелось бы привести пару примеров кода здесь,
но кода много так что предоставлю ссылку для
скачивания уже готового контроллера для поиска пользователей + собственную библиотеку кеширования и тестовою базу данных.
Скачать
В процессе создания некого приложения на CI у меня возник вопрос о поиске информации в базе данных без использования GET.
Никаких готовых решений в CI wiki я не нашел, так что решил сделать свой «велосипед».
Для начала рассмотрим примеры ссылок которые мы можем видеть при поиске на разных сайтах:
Пример ссылок передачи параметров через GET
Еще пример:
- sitename/search/query/p1:0:p2:value:p3: текст
Если ищем по одному параметру то ссылка выглядит более или менее нормально
Но если нам нужно искать что-то например по 5 или больше параметрах?
Вот тогда наша ссылка и
Пример ссылок передачи параметров через POST (пока одна только =) )
Собственно в такой ссылке нет никаких параметров для поиска,
только идентификатор уже сохраненного в кеше результата поиска.
Если мы будем передавать параметры через массив POST то наша ссылка будеть иметь
почти одинаковый вид при разных входящих параметрах поиска. Осталось только решить
«проблемы и сложности» подобного метода поиска.
Для решения нам понадобится CI + «любой класс кеширования» и немного времени.
И так, как же будет работать наша система:
1. Нужно создать уникальный ключ для сохранения результатов поиска в кеше.
(ссылка для просмотра результатов поиска будет выглядеть примерно так:
sitename/search/query/7ad549053bf2be45f309920b7b6a24bf/10)
2. Сделать запрос к базе данных.
3. Сохранить результат в кеше.
4. Вывести результат поиска пользователю.
Хотелось бы привести пару примеров кода здесь,
но кода много так что предоставлю ссылку для
скачивания уже готового контроллера для поиска пользователей + собственную библиотеку кеширования и тестовою базу данных.
Скачать