1

3 つのドロップダウン ボックスで動作する検索機能がいくつかあります。選択した基準に基づいて、プロファイルが返されます。3 つのドロップダウンは次のとおりです。

  • 選挙区
  • 性別

今、クエリを作成しようとしていますが、実際には、各ドロップダウンからオプションを選択する必要はなく、選択したくないことに気付きました。

たとえば、各ドロップダウンからオプションが選択されるまで、検索ボタンを無効にしたくありません。

ドロップダウンから値を選択し、ドロップダウンから値がまったく選択されていない可能性があり、検索ボタンをクリックするだけで、未知の組み合わせにどのように対処できるかを理解しようとしています.

私が最初に考えたのは、真理値表のようなものを使用できるということでしたが、これは単純に過剰であり、実際には非常に一般的な機能であると思います。

それから私は多分私は次のようなものを持つことができると思いました:

$county = "$_GET['county'];";
$constituency = "$_GET['constituency'];";
$gender = "$_GET['gender'];";

次に、それらが空であるかどうかを確認し、何らかの方法でこの値を使用できます。

if($county !== '') {
  ???SOMEHOW MAKE USE OF THIS IN AN SQL QUERY???
  PERHAPS PASS IT TO ANOTHER PARAMETER
  $sqlparams = "county = '$county'";
}

SELECT * FROM profile
WHERE {$sqlparams};

私は正しい軌道に乗っていると思いますが、いくつかのガイダンスを使用できます。

すべてのヘルプは大歓迎です。

4

4 に答える 4

1

これはあなたが望むべきだと思います。

<?php
$tooLookFor = array("county", "constituency", "gender");
foreach($tooLookFor as $key){
    if(isset($_GET[$key]) && strlen($_GET[$key])>0){
        $queryParams[] = $key.'="'.$_GET[$key].'"';
    }
}
$query = "SELECT * FROM profile WHERE ".implode(' AND ', $queryParams);
?>
于 2012-09-26T01:02:20.300 に答える
1

次のようなことができます。

$county = $_GET['county'];
$constituency = $_GET['constituency'];
$gender = $_GET['gender'];

$sqlparams = array();

if($county !== '') {
    $sqlparams[] = "county = '$county'";
}
if($constituency !== '') {
    $sqlparams[] = "constituency = '$constituency'";
}
if($gender !== '') {
    $sqlparams[] = "gender = '$gender'";
}

$query = "SELECT * FROM profile";

if (count($sqlparams) > 0) {
    $query .= " WHERE " . implode(" AND ", $sqlparams); 
}
于 2012-09-26T01:04:09.893 に答える
0

次のようなものでそれを行うことができます:

$where = array();

//repeat as needed
$where[$column] = $value;

$where2 = array();
foreach($where as $key => $value){
    $where2[] = "$key = '$value'";
}

$where_string = implode(' AND ', $where2);

$where_stringの後に挿入する文字列がありますWHERE

于 2012-09-26T01:02:47.073 に答える
0

はい、あなたは正しい道を進んでいますが、まだ正しいスイッチに達していません。;)

何を処理する必要があるかがわかるまで、クエリを作成することはできません。したがって、最初に、検証で、実際のキーワードとそれらが表すフィールドを (あなたが行っているように) 決定します。おそらく、これらはテーブルのフィールドにマップされます.3つのテーブルでしょうか? ポイントは、クエリを動的に構築する必要があるということです。

于 2012-09-26T01:02:50.087 に答える