HOME > 簡易データベースを作ってみよう > 

§絞込み検索(and検索)

一つのキーワードを入力して予想以上の検索結果がヒットした場合、キーワードを追加して絞込みを試みるのはユーザーの自然な行動です。
しかし、絞込検索に対応するのは案外大変だったりします。

1行ずつキーワードの数だけ繰り返し調べる

"絞込み検索(and検索)

一つのキーワードを入力して予想以上の検索結果がヒットした場合、キーワードを追加して絞込みを試みるのはユーザーの自然な行動です。
しかし、絞込検索に対応するのは案外大変だったりします。

1行ずつキーワードの数だけ繰り返し調べる。

手順を考えてみましょう。
まず入力されたキーワードを分解しなければいけません。
ユーザーは他の検索エンジンの習慣から2つ以上のキーワードで絞り込むとき「スペース」でキーワードを区切るのが自然でしょう。
そこで入力された文字列を「スペース」を区切り文字として分解します。
分解したキーワードは配列に収めておきます。

$KeyWord=$_GET[""key""];
$KeyWord=htmlspecialchars($KeyWord);
$KeyWord=mb_convert_encoding($KeyWord‚ ""UTF-8""‚ ""auto"");
$KeyWord=mb_convert_kana($keyWord‚ s); //解説(1)
$ArrKeyword=explode("" ""‚ $KeyWord); //解説(2)

解説(1)
区切りに使われるスペースが「半角」なのか「全角」なのかはケースバイケースです。
どちらでも対応できるように「全角スペース」が入力された場合、すべて半角スペースに変換して統一します。
mb_convert_kana関数は全角文字を半角に変換する関数です。
「s」は変換オプションで全角スペースを半角スペースに変換します。

mb_convert_kana(対象文字列‚ 変換オプション)

解説(2)
キーワードを半角スペース区切りの配列にします。

次にデータを1行ずつ読み込みながらすべてのキーワードと一致するか調べます。
$Result=array();
$Data=file(""item.csv"");
for($i=0;$i$<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
$Match=true; //解説(3)
for($n=0;$n<sizeof($ArrKeyword);$n++){ //解説(4)
if(!eregi($ArrKeyword[$n]‚ $lines)) //解説(5)
$Match=false;
break;
}
if($Match){ //解説(6)
array_push($Result‚ $Data[$i]);
}
}

解説(3)(6)
判定の基準となるフラグ($Match)を作ります。
$Matchが検索処理後もtrueであればデータを配列($Result)に移し変えます。

解説(4)
キーワードを収めた配列($ArrKeyword)の要素の数だけ1行を繰り返し調べます。
ここで一つ注意です。
繰り返しのfor文がネスト(入れ子)なので、$iではなく$nになっています。
どの変数がどこで使われているのかキチンと把握しておいてください。

解説(5)
もし一つでも一致しないキーワードがあれば$Matchはfalseとなり、次の行の検索が始まります。
「すべてのキーワードが一致すれば」ではなく「一致しないキーワードがなければ」というところがミソですね。

あとは移し変えられたデータの配列($Result)を使って検索結果を表示するだけです。"

簡易データベースを作ってみよう

  1. 仕組みとファイル構成
  2. CSVとは
  3. トップページを作る
  4. カテゴリー別ページを作る
  5. アイテム別ページを作る
  6. フリーワード検索を作る
  7. 検索結果がゼロの場合の処理
  8. 絞込み検索(and検索)
  9. 1ページを10件表示に制限する
  10. 登録画面を作る。
  11. CSVへの書き込み
  12. データを編集する。
  13. データを削除する。

メイン・メニュー

  1. はじめに
  2. 入門者向け参考書
  3. PHPの基本
  4. ローテーション・バナーを作ってみよう
  5. 検索結果リンクを自動化しよう
  6. 簡易データベースを作ってみよう
  7. ホームページ制作のためのリンク集

PHPが使えるサーバー

僕が使っているサーバーです。

エックスサーバー
多くのアフィリエイターが支持するレンタルサーバー。
当サイトでも使用しています。

管理人のブログ

音楽サイトでアフィリエイトblog
音楽アフィリエイトとサイト運営の効率化を考えるブログ