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