2016-06-01 17 views
2

私は、スキルに基づいてユーザーを検索する高度な検索システムを開発しています。これらはさまざまなスキルです。チェックボックスに基づく複数のSQL条件

skills

私はOR基準を使用していたユーザを探していたときに私がチェックしたときにアクセススキルを持つユーザーにアクセスするように、各スキルには値が今0 & 1. でデータベースに別々の列に格納されているだろう見つけられた。ここでは、検索条件のためのコードは次のとおりです。このコードは完璧に機能していますが、アクセスとクリスタルの両方がチェックされている場合、私は両方の基準に基づいてユーザーを検索したいが、それは一つだけに応じて検索し

$query .= "SELECT * FROM wordpress_candidate 
WHERE (city = '$cty') 
OR (state = '$stt')"; 
if(isset($s_g_1)){ $query .= "OR (generala = '$s_g_1')"; } 
if(isset($s_g_2)){ $query .= "OR (generalb = '$s_g_2')"; } 
if(isset($s_g_3)){ $query .= "OR (generalc = '$s_g_3')"; } 
if(isset($s_g_4)){ $query .= "OR (generald = '$s_g_4')"; } 
//if(isset($s_g_5)){ $query .= "OR (generale = '$s_g_5')"; } 
if(isset($s_g_6)){ $query .= "OR (generale = '$s_g_6')"; } 
if(isset($s_g_7)){ $query .= "OR (generalf = '$s_g_7')"; } 
if(isset($s_g_8)){ $query .= "OR (generalg = '$s_g_8')"; } 
if(isset($s_g_9)){ $query .= "OR (generalh = '$s_g_9')"; } 
if(isset($s_g_10)){ $query .= "OR (generali = '$s_g_10')"; } 
if(isset($s_g_11)){ $query .= "OR (generalj = '$s_g_11')"; } 
if(isset($s_g_12)){ $query .= "OR (generalk = '$s_g_12')"; } 
if(isset($s_g_other)){ $query .= "OR (generall = '$s_g_other')"; } 
if(isset($s_f_1)){ $query .= "OR (funda = '$s_f_1')"; } 
if(isset($s_f_2)){ $query .= "OR (fundb = '$s_f_2')"; } 
if(isset($s_f_3)){ $query .= "OR (fundc = '$s_f_3')"; } 
if(isset($s_f_4)){ $query .= "OR (fundd = '$s_f_4')"; } 
if(isset($s_f_5)){ $query .= "OR (funde = '$s_f_5')"; } 
if(isset($s_f_6)){ $query .= "OR (fundf = '$s_f_6')"; } 
if(isset($s_f_7)){ $query .= "OR (fundg = '$s_f_7')"; } 
if(isset($s_f_8)){ $query .= "OR (fundh = '$s_f_8')"; } 
if(isset($s_f_9)){ $query .= "OR (fundi = '$s_f_9')"; } 
if(isset($s_f_10)){ $query .= "OR (fundj = '$s_f_10')"; } 
if(isset($s_f_11)){ $query .= "OR (fundk = '$s_f_11')"; } 
if(isset($s_f_12)){ $query .= "OR (fundl = '$s_f_12')"; } 
if(isset($s_f_13)){ $query .= "OR (fundm = '$s_f_13')"; } 
if(isset($s_f_other)){ $query .= "OR (fund = '$s_f_other')"; } 
if(isset($s_a_1)){ $query .= "OR (acca = '$s_a_1')"; } 
if(isset($s_a_2)){ $query .= "OR (accb = '$s_a_2')"; } 
if(isset($s_a_3)){ $query .= "OR (accc = '$s_a_3')"; } 
if(isset($s_a_4)){ $query .= "OR (accd = '$s_a_4')"; } 
if(isset($s_a_5)){ $query .= "OR (acce = '$s_a_5')"; } 
if(isset($s_a_6)){ $query .= "OR (accf = '$s_a_6')"; } 
if(isset($s_a_7)){ $query .= "OR (accg = '$s_a_7')"; } 
if(isset($s_a_8)){ $query .= "OR (acch = '$s_a_8')"; } 
if(isset($s_a_9)){ $query .= "OR (acci = '$s_a_9')"; } 
if(isset($s_a_10)){ $query .= "OR (accj = '$s_a_10')"; } 
if(isset($s_a_11)){ $query .= "OR (acck = '$s_a_11')"; } 
if(isset($s_a_other)){ $query .= "OR (accl = '$s_a_other')"; } 
if(isset($s_p_1)){ $query .= "OR (puba = '$s_p_1')"; } 
if(isset($s_p_2)){ $query .= "OR (pubb = '$s_p_2')"; } 
if(isset($s_p_3)){ $query .= "OR (pubc = '$s_p_3')"; } 
if(isset($s_p_4)){ $query .= "OR (pubd = '$s_p_4')"; } 
if(isset($s_p_5)){ $query .= "OR (pube = '$s_p_5')"; } 
if(isset($s_p_6)){ $query .= "OR (pubf = '$s_p_6')"; } 
if(isset($s_p_7)){ $query .= "OR (pubg = '$s_p_7')"; } 
if(isset($s_p_8)){ $query .= "OR (pubh = '$s_p_8')"; } 
if(isset($s_p_9)){ $query .= "OR (pubi = '$s_p_9')"; } 
if(isset($s_p_other)){ $query .= "OR (pubj = '$s_p_other')"; } 
if(isset($s_i_1)){ $query .= "OR (ita = '$s_i_1')"; } 
if(isset($s_i_2)){ $query .= "OR (itb = '$s_i_2')"; } 
if(isset($s_i_3)){ $query .= "OR (itc = '$s_i_3')"; } 
if(isset($s_i_4)){ $query .= "OR (itd = '$s_i_4')"; } 
if(isset($s_i_5)){ $query .= "OR (ite = '$s_i_5')"; } 
if(isset($s_i_6)){ $query .= "OR (itf = '$s_i_6')"; } 
if(isset($s_i_7)){ $query .= "OR (itg = '$s_i_7')"; } 
if(isset($s_i_8)){ $query .= "OR (ith = '$s_i_8')"; } 
if(isset($s_i_other)){ $query .= "OR (iti = '$s_i_other')"; 

。私は両方のチェックボックスの条件を確認し、クエリにANDを追加できることを知っています。しかし、どのようにすべてのチェックボックスでこれを行うことができますか?

HTML

<form method="post" enctype="multipart/form-data" name="searchform" action=""> 
<tr> 
    <td align="left"><input value="1" <?php echo ($s_g_1=='1')?'checked':'' ?> id="s_g_1" name="s_g_1" type="checkbox"><label for="s_g_1"><span>Access</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_1=='1')?'checked':'' ?> id="s_f_1" name="s_f_1" type="checkbox"><label for="s_f_1"><span>ACT</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_1=='1')?'checked':'' ?> id="s_a_1" name="s_a_1" type="checkbox"><label for="s_a_1"><span>Blackbaud Financial Edge&nbsp;</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_1=='1')?'checked':'' ?> id="s_p_1" name="s_p_1" type="checkbox"><label for="s_p_1"><span>Corel Draw</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_1=='1')?'checked':'' ?> id="s_i_1" name="s_i_1" type="checkbox"><label for="s_i_1"><span>Mac</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_2=='1')?'checked':'' ?> id="s_g_2" name="s_g_2" type="checkbox"><label for="s_g_2"><span>Crystal Reports&nbsp;</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_10=='1')?'checked':'' ?> id="s_f_10" name="s_f_10" type="checkbox"><label for="s_f_10"><span>Convio</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_2=='1')?'checked':'' ?> id="s_a_2" name="s_a_2" type="checkbox"><label for="s_a_2"><span>Fund EZ</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_8=='1')?'checked':'' ?> id="s_p_8" name="s_p_8" type="checkbox"><label for="s_p_8"><span>Dreamweaver</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_2=='1')?'checked':'' ?> id="s_i_2" name="s_i_2" type="checkbox"><label for="s_i_2"><span>PC</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_3=='1')?'checked':'' ?> id="s_g_3" name="s_g_3" type="checkbox"><label for="s_g_3"><span>Excel</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_2=='1')?'checked':'' ?> id="s_f_2" name="s_f_2" type="checkbox"><label for="s_f_2"><span>Donor2</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_3=='1')?'checked':'' ?> id="s_a_3" name="s_a_3" type="checkbox"><label for="s_a_3"><span>Fundware</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_2=='1')?'checked':'' ?> id="s_p_2" name="s_p_2" type="checkbox"><label for="s_p_2"><span>Front Page</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_3=='1')?'checked':'' ?> id="s_i_3" name="s_i_3" type="checkbox"><label for="s_i_3"><span>Web</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_4=='1')?'checked':'' ?> id="s_g_4" name="s_g_4" type="checkbox"><label for="s_g_4"><span>Filemaker Pro</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_3=='1')?'checked':'' ?> id="s_f_3" name="s_f_3" type="checkbox"><label for="s_f_3"><span>Donor Perfect</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_11=='1')?'checked':'' ?> id="s_a_11" name="s_a_11" type="checkbox"><label for="s_a_11"><span>Great Plains</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_3=='1')?'checked':'' ?> id="s_p_3" name="s_p_3" type="checkbox"><label for="s_p_3"><span>Illustrator</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_4=='1')?'checked':'' ?> id="s_i_4" name="s_i_4" type="checkbox"><label for="s_i_4"><span>Windows XP</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_11=='1')?'checked':'' ?> id="s_g_11" name="s_g_11" type="checkbox"><label for="s_g_11"><span>HTML</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_11=='1')?'checked':'' ?> id="s_f_11" name="s_f_11" type="checkbox"><label for="s_f_11"><span>eTapestry</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_4=='1')?'checked':'' ?> id="s_a_4" name="s_a_4" type="checkbox"><label for="s_a_4"><span>MIP</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_9=='1')?'checked':'' ?> id="s_p_9" name="s_p_9" type="checkbox"><label for="s_p_9"><span>InDesign</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_5=='1')?'checked':'' ?> id="s_i_5" name="s_i_5" type="checkbox"><label for="s_i_5"><span>Help Desk</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_6=='1')?'checked':'' ?> id="s_g_6" name="s_g_6" type="checkbox"><label for="s_g_6"><span>Lotus</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_4=='1')?'checked':'' ?> id="s_f_4" name="s_f_4" type="checkbox"><label for="s_f_4"><span>Fundmaster</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_5=='1')?'checked':'' ?> id="s_a_5" id="" name="s_a_5" type="checkbox"><label for="s_a_5"><span>OneWrite Plus</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_4=='1')?'checked':'' ?> id="s_p_4" name="s_p_4" type="checkbox"><label for="s_p_4"><span>Pagemaker</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_6=='1')?'checked':'' ?> id="s_i_6"name="s_i_6" type="checkbox"><label for="s_i_6"><span>Oracle</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_7=='1')?'checked':'' ?> id="s_g_7" name="s_g_7" type="checkbox"><label for="s_g_7"><span>Outlook</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_5=='1')?'checked':'' ?> id="s_f_5" name="s_f_5" type="checkbox"><label for="s_f_5"><span>GiftmakerPRO&nbsp;</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_6=='1')?'checked':'' ?> id="s_a_6" name="s_a_6" type="checkbox"><label for="s_a_6"><span>Peachtree</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_p_5=='1')?'checked':'' ?> id="s_p_5" name="s_p_5" type="checkbox"><label for="s_p_5"><span>Photoshop</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_i_7=='1')?'checked':'' ?> id="s_i_7" name="s_i_7" type="checkbox"><label for="s_i_7"><span>Windows NT</span></label></td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_8=='1')?'checked':'' ?> id="s_g_8" name="s_g_8" type="checkbox"><label for="s_g_8"><span>Powerpoint</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_12=='1')?'checked':'' ?> id="s_f_12" name="s_f_12" type="checkbox"><label for="s_f_12"><span>GIFTS</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_7=='1')?'checked':'' ?> id="s_a_7" name="s_a_7" type="checkbox"><label for="s_a_7"><span>Quickbooks</td> 
    <td align="left"><input value="1" <?php echo ($s_p_6=='1')?'checked':'' ?> id="s_p_6" name="s_p_6" type="checkbox"><label for="s_p_6"><span>Quark</td> 
    <td align="left"><input value="1" <?php echo ($s_i_8=='1')?'checked':'' ?> id="s_i_8" name="s_i_8" type="checkbox"><label for="s_i_8"><span>Windows 2000</td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_12=='1')?'checked':'' ?> id="s_g_12" name="s_g_12" type="checkbox"><label for="s_g_12"><span>Salesforce</td> 
    <td align="left"><input value="1" <?php echo ($s_g_5=='1')?'checked':'' ?> id="s_g_5" name="s_g_5" type="checkbox"><label for="s_g_5"><span>iMIS</td> 
    <td align="left"><input value="1" <?php echo ($s_a_8=='1')?'checked':'' ?> id="s_a_8" name="s_a_8" type="checkbox"><label for="s_a_8"><span>Quicken</td> 
    <td align="left"><input value="1" <?php echo ($s_p_7=='1')?'checked':'' ?> id="s_p_7" name="s_p_7" type="checkbox"><label for="s_p_7"><span>MS Publisher&nbsp;</td> 
    <td align="left"><input value="1" <?php echo ($s_i_other=='1')?'checked':'' ?> id="s_i_other" name="s_i_other" type="checkbox"><label for="s_i_other"><span>Other</td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_9=='1')?'checked':'' ?> id="s_g_9" name="s_g_9" type="checkbox"><label for="s_g_9"><span>Word</td> 
    <td align="left"><input value="1" <?php echo ($s_f_6=='1')?'checked':'' ?> id="s_f_6" name="s_f_6" type="checkbox"><label for="s_f_6"><span>Millenium</td> 
    <td align="left"><input value="1" <?php echo ($s_a_9=='1')?'checked':'' ?> id="s_a_9" name="s_a_9" type="checkbox"><label for="s_a_9"><span>Real World</td> 
    <td align="left"><input value="1" <?php echo ($s_p_other=='1')?'checked':'' ?> id="s_p_other" name="s_p_other" type="checkbox"><label for="s_p_other"><span>Other</td> 
    <td align="left">&nbsp;</td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_10=='1')?'checked':'' ?> id="s_g_10" name="s_g_10" type="checkbox"><label for="s_g_10"><span>Word Perfect</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_7=='1')?'checked':'' ?> id="s_f_7" name="s_f_7" type="checkbox"><label for="s_f_7"><span>Paradigm</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_10=='1')?'checked':'' ?> id="s_a_10" name="s_a_10" type="checkbox"><label for="s_a_10"><span>Solomon</span></label></td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    </tr> 
    <tr> 
    <td align="left"><input value="1" <?php echo ($s_g_other=='1')?'checked':'' ?> id="s_g_other" name="s_g_other" type="checkbox"><label for="s_g_other"><span>Other</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_f_8=='1')?'checked':'' ?> id="s_f_8" name="s_f_8" type="checkbox"><label for="s_f_8"><span>Pledgemaker</span></label></td> 
    <td align="left"><input value="1" <?php echo ($s_a_other=='1')?'checked':'' ?> id="s_a_other" name="s_a_other" type="checkbox"><label for="s_a_other"><span>Other</span></label></td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    </tr> 
    <tr> 
    <td align="left">&nbsp;</td> 
    <td align="left"><input value="1" <?php echo ($s_f_9=='1')?'checked':'' ?> id="s_f_9" name="s_f_9" type="checkbox"><label for="s_f_9"><span>Raiser's Edge&nbsp;</span></label></td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    </tr> 
    <tr> 
    <td align="left">&nbsp;</td> 
    <td align="left"><input value="1" <?php echo ($s_f_other=='1')?'checked':'' ?> id="s_f_other" name="s_f_other" type="checkbox"><label for="s_f_other"><span>Other</span></label></td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    <td align="left">&nbsp;</td> 
    </tr> 
    </tbody></table> 
    </td> 
</tr> 
</form> 

答えて

0

。チェックボックスがチェックされていない場合は、ユーザーがスキルを持っているかどうかに関係なく問題ありません。正しい?

ここでは、正のスキルのためにのみフィルタリング:

if ($s_g_1) { $query .= " AND (generala = 1) "; } 
if ($s_g_2) { $query .= " AND (generalb = 1) "; } 
... 

を「アクセス」と「クリスタル」が選択されているのであれば、あなたは関係なく、他のスキルの、両方のスキル(AND)を持つすべてのユーザーを取得します。

(私はもし条件にisset()をチェックしません - $s_g_10でない場合、私は唯一の(=チェックボックスがチェックされている場合)、私のクエリで条件をしたいあなたは$s_g_1であるかどうか、わからない場合。 !empty($s_g_1)でチェックして、NOTICEを避けてください。

+0

大丈夫ですよね! –

+0

大丈夫どのように変数が '$ cty'に設定されている場合、これを利用できるようにするには? –

0

使用AND句の代わりに、OR両方

if(isset($s_g_1)){ $query .= "AND (generala = '$s_g_1')"; } 
if(isset($s_g_2)){ $query .= "AND (generalb = '$s_g_2')"; } 

を検索することも、私はこれらすべてをチェックするためにループを使用し、お勧めします。

+1

私は2分遅れです。 :)私は彼のクエリを使用して、彼はすでに2つのうちの1つしか持っていない人の間で両方のスキルを持っている人を探していることを指摘します。あなたの答えで、彼は選択されたすべてのスキルを持っている人だけを見つけるでしょう。 – Cynical

+0

もし私が 'AND'を使うとチェックされていない値もチェックしますが、両方が' AND'よりもうまくチェックされていれば必要です。質問をお読みください。 –

+0

チェックされていない値は使用しないでください。そうであれば、問題はあなたのコードのどこかにあると思います。 – Cynical

0

私はあなただけ確認スキルのユーザーをフィルタすることを、理解し、あなたがタイプの検索を選択する入力が必要だと思う「と」または「または」

$query .= "SELECT * FROM wordpress_candidate 
WHERE (city = '$cty') 
OR (state = '$stt')"; 
if (searchType = 'AND') 
{ 
    $and_or = 'AND' 
} 
else 
{ 
    $and_or = 'OR' 
} 
if(isset($s_g_1) && ($s_g_1)) { $query .= $and_or + " (generala = '$s_g_1')"; } 
if(isset($s_g_2) && ($s_g_2)) { $query .= $and_or + " (generalb = '$s_g_2')"; } 
+0

2つ以上が選択されている場合、条件チェックを行うことができますか? –

+0

私は検索のタイプ​​を選択するために別の入力が必要だと思います。それがあなたにとって有効でない場合、チェックされたチェックを数えることができます。 – Raspberryano

+0

大丈夫質問各フィールドがこのようにしたいので 'WHERE(city = '$ cty')"; '変数が' $ cty'に設定されているときにこれを利用できるようにするにはどうすればいいですか? –

関連する問題