2012-05-03 2 views
0

привет у меня есть поисковая система для моего сайта. У меня есть два поля выбора. я хотел бы привести пример:как сформировать запрос выбора по диапазону

input_a: 3 input_b: 5

поэтому запросы должны выглядеть следующим образом:

if (($input_a == true) && ($input_b == false)){ 
     $filter_orders[] = " `col` LIKE '%$input_a%' "; 
    } 
    if (($input_a == false) && ($input_b == true)){ 
     $filter_orders[] = " `col` LIKE '%$input_b%' "; 
    } 
    if (($input_a == true) && ($input_b == true)){ 
     $filter_orders[] = " `col`= `col`>='%$input_a%' AND `col` = `col`<='%$input_b%' "; 

теперь проблема в том, что я не знаю, если последний запрос неверен или нет. логика этого будет заключаться в том, что в случае моего примера следует найти диапазон от 3 до 5.

так 1,2 [3,4,5] 6,7,8 ...

, если есть кто-то, кто мог бы помочь мне, я действительно был бы признателен.

спасибо большое.

ответ

1

NO,, к сожалению, что это все, но правильно. Это должно быть что-то вроде этого.

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 
+0

похоже, что% xyz% работает только в сочетании с LIKE. поэтому я должен был оставить их, и он работает. большое спасибо. – bonny

2

Это должно быть

$filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 

EDIT: Вы, вероятно, хотите весь оператор выглядеть следующим образом:

if ((!empty($input_a) && is_int($input_a)) && (empty($input_b) || !is_int($input_b)) { 
    $filter_orders[] = " `col`='%$input_a%' "; 
} 
else if ((empty($input_b) || !is_int($input_a)) && (!empty($input_b) && is_int($input_b))) { 
    $filter_orders[] = " `col`='%$input_b%' "; 
} 
else if (!empty($input_a) && !empty($input_b) && is_int($input_a) && is_int($input_b)) { 
    $filter_orders[] = " `col`>='%$input_a%' AND `col`<='%$input_b%' "; 
} 

Вставка else if вместо того, чтобы просто if помогает делает, что другие if s Арент казнены если найдено более раннее if.

Использование = вместо LIKE Wille убедитесь, что 3 == 3 и не 3 and 31 or 32

Смежные вопросы