1

PHPを使用してmysqlデータベースで検索を実行するには、6つの異なる検索フィルターをさまざまな方法で指定する必要があります。どうしようか迷っています。

私は Web サイトを運営しており、6 つの異なる検索フィルターを使用して非常に大規模な検索を実行する必要があります。

この複雑なロジックで大量のコードを書くのはこれが初めてなので、私には複雑に思えます。

これは HTML コードです:

<input type='text' name='searchterm' />

<select name='ind' class='custom-select'>
    <option value='0'> Select Industry</option>
    <option value='1'> Real Estate </option>
    <option value='2'> Hospitality / Hotel / Tourism / Travel & Aviation </option>
    <option value='3'> Financial Services / Banking </option>
</select>           

<select name='spec' class='custom-select'>
    <option value='0'> Select Specialization</option>
    <option value='1'> Accounting / Banking & Finance / Insurance </option>
    <option value='2'> Administration / Management / Executive </option>
    <option value='3'> Architecture / Construction  / Civil </option>
</select>           

<select name='loc' class='custom-select'>
    <option value='0'> Select Location</option>
    <option value='1'> Lagos </option>
</select>

完全な HTML コードはこちら: http://jsbin.com/otibel/1/

6 つの異なる選択ボックスがあり、それぞれが検索フィルターです。

ユーザーは、選択ボックスを 1 つだけ選択して、一度に 2 つ、または一度に 3 つの検索フィルターを検索または選択できます。

私はなんとか検索フィルターを6つだけ実行しました。このコードは、ユーザーが検索フィルターを1つだけ選択したときのものです。

function performSearchWithFilter(){
    if ( ($_GET['ind'] > 0) && (isset($_GET['ind'])) && ( $_GET['spec'] <= 0) && ( $_GET['loc'] <= 0 ) && ( $_GET['workexp'] <= 0 )  && ( $_GET['type'] <= 0 ) && ( $_GET['qualfctn'] <= 0 ) ){
        //it will carry out the search, when just the ind select box has been selected
    } else if ( ($_GET['ind'] <= 0) && ($_GET['spec'] > 0) && isset($_GET['spec']) && ( $_GET['loc'] <= 0 ) && ( $_GET['workexp'] <= 0 )  && ( $_GET['type'] <= 0 ) && ( $_GET['qualfctn'] <= 0 ) ) {
        //it will carry out the search, when just the spec select box has been selected
    }  else if ( ($_GET['ind'] <= 0) && ($_GET['spec'] <= 0) && ($_GET['loc'] > 0) && (isset($_GET['loc'])) && ( $_GET['workexp'] <= 0 )  && ( $_GET['type'] <= 0 ) && ( $_GET['qualfctn'] <= 0 ) ) {
        //it will carry out the search, when just the loc select box has been selected
    } else if ( ($_GET['ind'] <= 0) && ($_GET['spec'] <= 0) && ($_GET['loc'] <= 0) && ($_GET['workexp'] > 0) && isset($_GET['workexp'])  && ( $_GET['type'] <= 0 ) && ( $_GET['qualfctn'] <= 0 ) ) {
        //it will carry out the search, when just the workexp select box has been selected
    } else if ( ($_GET['ind'] <= 0) && ($_GET['spec'] <= 0) && ($_GET['loc'] <= 0) && ($_GET['workexp'] <= 0) && ($_GET['type'] > 0) && isset($_GET['type']) && ( $_GET['qualfctn'] <= 0 ) )  {
        //it will carry out the search, when just the type select box has been selected
    } else if ( ($_GET['ind'] <= 0) && ($_GET['spec'] <= 0) && ($_GET['loc'] <= 0) && ($_GET['workexp'] <= 0) && ($_GET['type'] <= 0) && ($_GET['qualfctn'] > 0) && isset($_GET['qualfctn']) ) {
        //it will carry out the search, when just the qualfctn select box has been selected
    }
}

このように検索用のコードを記述できることはわかっていますが、25 の異なる else ステートメントにする必要があり、これは複雑に見えます。

順列と組み合わせの数学公式を使用して、次のようなアルゴリズムで 6 つの検索パラメーターを配置しました。

ind, spec, loc, workexp, type, qualfctn, ind & spec, ind & loc, ind & workexp, ind & type, ind & qualfctn, spec & loc, spec & workexp, spec & type, spec & qualfctn, loc & workexp, loc & type, loc & qualfctn, workexp & type, workexp & qualfctn, type & qualfctn, ind & spec & loc & workexp & type & qualfctn, ind & spec & loc & workexp & type, ind & spec & loc & workexp, ind & spec & loc.

これは私が作成した検索フィルター アルゴリズムです。つまり、ユーザーがさまざまな方法で検索フィルターを選択した場合です。

PHP の検索プラグイン、フレームワーク、またはライブラリでこれを行うことができます。複数のフィルターを使用して検索し、記述するコードの量を最小限に抑えます。繰り返しますが、私は何をすべきか、どのようにすべきかについて本当に混乱しています。

4

1 に答える 1