2012-05-03 12 views
0

こんにちは私のサイトの検索エンジンを持っています。私は2つの選択フィールドを持っています。私は例を与えるしたいと思います:範囲で選択クエリを構成する方法

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 ...

私は本当に感謝私を助けることができる誰かがあれば。

ありがとうございます。 おそらく全体の文は次のようになりたい::

else ifだけではなく if助け実行してください他の if sがアレント作るの挿入
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%' "; 
} 

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

EDITあるべき

答えて

1

NOを作る使用

、正しい以外のすべてである悲しそう。それはこのようなものでなければなりません。

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

%xyz%はLIKEとの組み合わせでのみ機能します。だから私はこれらを残さなければならず、それは機能する。どうもありがとう。 – bonny

2

先にifが見つかった場合は真です。代わりにLIKE WILLEの=は確か3 == 3ことなく3 and 31 or 32

関連する問題