2017-03-17 20 views
0

2つの検索パラメータ(タイプと場所など)を使用して自分のWebページに入力があります。パラメータが入力されると、PHPはSQLデータベースを検索し、入力パラメータを満たす結果を出力します。条件が満たされない場合、SQL/PHPをすべて選択してください

$sql = " 
SELECT MainID 
    , MainName 
    , MainLocation 
    , MainType 
    FROM Main 
WHERE MainType = 'typeIWant' 
    AND MainLocation = 'LocationIWant' 
"; 

ただし、ユーザーが1つのパラメーターだけを選択すると、選択されたパラメーターのみを満たすすべての結果が表示されます。

ような何か:これが動作しない場合を除き

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' AND MainLocation = '*' "; 

MainTypeを満たすすべての結果がMainLocationの内容に関係なく表示されるはずです。

これはどのように行われますか?

+1

2番目のクエリから 'AND MainLocation = '*''を削除します。 –

+0

しかし、私は2つのパラメータを取る入力を持っているので、ユーザーが1つのパラメータで検索したいだけなら、2番目のパラメータに何を入れますか? – mynex

答えて

0

if statementを使用して、次のように確認できます。

$sql = " 
SELECT MainID 
    , MainName 
    , MainLocation 
    , MainType 
    FROM Main 
WHERE MainType = 'typeIWant' 
"; 

if (isset($_GET['MainLocation']) && $_GET['MainLocation'] != '') { 
    $sql .= " AND MainLocation = 'LocationIWant'" 
} 
+0

私の愚かなので、これを考えることはありません!ありがとうございました! – mynex

+0

それは馬鹿ではありません。あなたは練習する必要があります。 –

+0

編集:他の人がコードを使用したい場合は、 $ sql。= "AND MainLocation = 'LocationIWant'"の後にセミコロンを追加してください。 – mynex

2

下の行:

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' AND MainLocation = '*' "; 

と呼ばれる(またはとして指名)MainLocationを探して*

だけMainTypeを検索したい場合は、単に実行する必要があります。

$sql = "SELECT MainID, MainName, MainLocation, MainType FROM Main WHERE MainType= 'typeIWant' "; 
+0

私は2つのパラメータを取る入力を持っているので、ユーザーが2つのパラメータを使用して結果をフィルタリングしたい場合はうまく動作しますが、ユーザーが1つのパラメータで検索したい場合は、 – mynex

関連する問題