1

辞書を作成していて、ユーザーが取得できる結果の数を制限したいと考えています。私の HTML ページには、ユーザーが制限できる検索範囲を定義する一連のラジオ ボタンがあります。1 = シンプル、2 = 簡単、3 = 普通、4 = 難しい、7 = すべて。これは、エントリに添付されたデータベース値、難易度によって定義されます。次のコードで検索を制限しようとしていますが、結果が返されません。$search_limit はラジオの値です。

if(strcmp($search_limit, '1'))
        {
            $sql .= ') and (Difficulty is null or Difficulty = 1) and          rownum<=500' . $search_order;
        }
    elseif (strcmp($search_limit, '2')) 
    {
            $sql .= ') and (Difficulty  >= 1 or Difficulty <= 3) and     rownum<=500' . $search_order;
        }
        elseif (strcmp($search_limit, '3')) 
        {
            $sql .= ') and (Difficulty  >= 4 or Difficulty <= 6) and     rownum<=500' . $search_order;
        }
        else
        {
            $sql .= ') and (Difficulty <= 7) or rownum<=500' . $search_order;
        }

私が問題を抱えているのは、(難易度 >= x または難易度 <= x) です。検索制限をelseステートメントにデフォルト設定すると、難易度7(最大)以下のすべてが正しく返されます。同様に、else ステートメントの 7 を 7 未満の他の数字に置き換えても、正しく機能します。定義された検索を機能させることができません。

4

2 に答える 2

0

難易度>=1または難易度<=3

これは常に当てはまります(難易度がnullの場合を除く):すべての数値が1より大きいか3より小さい。

あなたは意味する必要があります

Difficulty >= 1 AND Difficulty <= 3
于 2012-07-02T16:18:44.337 に答える
0

範囲を検索するときは、x >= y AND x <= z... を使用する必要があります。それ以外の場合は、ORすべてを返します。

だから変えて…

Difficulty >= 1 or Difficulty <= 3

に...

Difficulty >= 1 and Difficulty <= 3

また、他のすべてのelseロジックが異なる場合と同様に、ロジックが異なります。or rownum<=500and rownum<=500

于 2012-07-02T16:21:31.533 に答える