@gomer1726

Как сделать фильтр поиска на сайте?

function search($price_on, $price_to){
	  $query = "SELECT * FROM `table`";
	  if($price_on) $query .= " WHERE `price-on`='".$price_on."'";
	  if($price_to) $query .= " WHERE `price-to`='".$price_to."'";
  }

Вот создаю такую функцию которая бы вернула sql запрос но не могу правильно построить алгоритм подскажите пожалуйста.
Функция принимает ЦЕНА ОТ и ЦЕНА ДО. Но как здесь поставить между ними AND или если один из них отсутствует ничего не добавлять
  • Вопрос задан
  • 753 просмотра
Пригласить эксперта
Ответы на вопрос 2
dimonchik2013
@dimonchik2013
non progredi est regredi
1) BETWEEN

2) если ОТ не задано, то ОТ = MIN() / ДО - MAX()
вместо мин макс можешь держать разумные целые типа 0 и 100000, чтобы в базу не лезть
Ответ написан
Комментировать
@IceJOKER
Web/Android developer
Лучший вариант:
function wherePriceBetween($from_price, $to_price){
 $sql = "SELECT * from `table` where `price` BETWEEN {$from_price} AND {$to_price}"; 
 //....
}


Для вашего случая:
function search($price_on, $price_to){
    $query = "SELECT * FROM `table` WHERE 1=1";
    if($price_on) $query .= " AND `price-on` = {$price_on}";
    if($price_to) $query .= " AND `price-to` = {$price_to}";
 }


p.s. вместо равно мне кажется нужно поставить больше или меньше + ровно, т.к. по контексту идет поиск ОТ какого-то ДО какого-то, т.е.:
function search($price_on, $price_to){
    $query = "SELECT * FROM `table` WHERE 1=1";
    if($price_on) $query .= " AND `price-on` >= {$price_on}";
    if($price_to) $query .= " AND `price-to` <= {$price_to}";
 }
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы