PHPで製作した電子掲示板にAND・OR検索機能を実装したのですが、AND検索が上手くいきません。
【例】書き込みのタイトルが「huga」、ハンドルネームが「hoge」、書き込み内容が「hogehuga」のデータがあるとします。
「hogehuga」というワードでは、AND・OR両方で上記のデータが検索結果に表示されます。
しかし、「hoge huga」と、間に全角・半角スペースを入れて検索すると、OR検索の場合では表示されますが、AND検索の場合では表示されません。
原因は何でしょうか。ご提示よろしくお願いいたします。
※下記のコードは重要な部分だけ抜き出しています
PHP
1$searchword = empty($_GET["searchword"])? null:$_GET["searchword"];//検索ワード 2$cond = $_GET["cond"];//検索タイプ 3 4if (!empty($searchword)){ 5$search_word = str_replace(' ', ' ', $searchword); 6$search_words = explode(' ', $search_word); 7 8$final_search_words = array(); 9if (count($search_words) > 0) { 10 foreach($search_words as $word) { 11 if (!empty($word)) { 12 $final_search_words[] = $word; 13 } 14 } 15} 16$where_list = array(); 17if (count($final_search_words) > 0) { 18 foreach($final_search_words as $word) { 19 $where_list[] = "'%$word%'"; 20 } 21} 22if($cond == "AND"){ 23 $where_clause = implode(' AND ', $where_list); 24}else{ 25 $where_clause = implode(' OR ', $where_list); 26} 27$sql = "select * from bbs_data where concat(user_name,' ',user_title,' ',user_mes) LIKE $where_clause";
html
1<form action="./search.php" id="searchform" method="get" name="search_form"> 2 <p> 3 <input id="searchword" name="searchword" type="text" size="40" value=""> 4 <input id="searchbtn" type="submit" value="検索"> 5 </p> 6 <p> 7 <input class="radio" type="radio" name="cond" value="AND" checked><small>AND</small> 8 <input class="radio" type="radio" name="cond" value="OR"><small>OR</small> 9 </p> 10</form>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/18 05:01