Вообще говоря, чем меньше данных нужно извлечь из базы данных для обработки в PHP, тем лучше.Меньше кода, который вам нужно написать, меньше возникающих ошибок, меньше данных для передачи через программный стек и т. Д. И т. Д. Возможно, вам придется ознакомиться с тем, как писать более сложные запросы SQL.Ниже приведен гораздо более эффективный вариант фрагмента кода, который вы дали:
$sql = "SELECT * FROM properties WHERE rent >= $min_rent AND rent <= $max_rent";
$matched_properties = Property::find_by_sql($sql);
Однако для обеспечения безопасности вам необходимо убедиться, что $min_rent
и $max_rent
проверены как действительные числа.(Подсказка: пропустите входные данные через is_numeric()
и сгенерируйте ошибку, если эта функция вернет false
.) В противном случае хакер может выполнить то, что известно как Внедрение кода , введя другие фрагменты строк запроса SQL на месте"min_rent" или "max_rent", чтобы ваш запрос делал много нежелательных вещей.
Что касается реализации механизма фильтрации, подобного этому U сайта Айовы, то это вопрос наличия ссылок или формы на боковой панели, котораяобновляет страницу при нажатии.Вы можете сделать это несколькими способами.Самый крутой способ, вероятно, использовать AJAX для автоматического обновления главного окна контента.Сайт U of Iowa, похоже, этого не делает, потому что, когда я нажимаю на различные ссылки фильтра на боковой панели, обновляется вся страница, а не только основная область содержимого.
jQuery действительно полезная библиотека JavaScript, которая может помочь вам сделать AJAX с минимальным кодированием.Проверьте это.По сути, вы захотите построить боковую панель фильтра так, чтобы каждая нажатая ссылка вызывала запрос AJAX на ваш сервер, который извлекает обновленный набор данных на основе выбранных пользователем фильтров.Когда результат возвращается из вызова AJAX, вы можете использовать методы JavaScript и / или jQuery для ввода данных по мере необходимости на вашу страницу.
Удачи!