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

§検索結果がゼロの場合の処理

フリーワードで検索すると、必ずしも検索結果があるとは限りません。
ヒットした数を「n件」と表示したり、何もヒットしないときは「見つかりませんでした」
と表示できるようにしてみましょう。

空の変数を用意する

"検索結果がゼロの時はどうしたら良いでしょうか?
単純に「ifの反対はelse」というふうにすると

if(eregi($KeyWord‚ $lines)){
print""見つかりました。"";
}else{
print""見つかりませんでした。"";
}

これを実行すると
見つかりませんでした。見つかりませんでした。見つかりました。見つかりませんでした。見つかりました。・・・

こんな感じで一行ごとに成否の結果が表示されてしまいます。

簡単そうで難しいですね。
これを解決するには「一旦ヒットしたデータを別の配列に移し変えてその配列を読み込む」という風にすれば良いでしょう。
$Result=array(); //解説(1)
$Data=file(""item.csv"");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
if(eregi($KeyWord‚ $lines)){
array_push($Result‚ $Data[$i]); //解説(2)
}
}

解説(1)
中身が無い配列を先に用意します。
引数を指定しないarray()で$Resultが配列型であることを定義します。

解説(2)
array_pushは配列に要素を追加する関数です。

array_push(配列‚ 追加する要素)

検索結果を収めた配列$Resultを使って表示部分を作ります。
<?php
$n=sizeof($Result); //解説(3)
if($n==0){
print""見つかりませんでした"";
}else{
print""{$n}件見つかりました"";
?>
<ul>
<?php
for($i=0;$i<sizeof($Result);$i++){ //解説(4)
$line=explode(""‚ ""‚ $Result[$i]);
?>
<li><a href=""item.php?id=<?=$line[0]?>""><?=$line[3]?></a></li>
<?php
}
}
?>
</ul>

解説(3)
$Resultには検索で一致したデータが収められています。
sizeof関数で要素の数をかぞえ、ゼロなら処理を中止し「見つかりませんでした。」と表示します。
要素があれば検索結果を表示します。

解説(4)
$Resultを展開しページへのリンクを生成します。

==

回りくどい方法を紹介しましたが、単に
$n=0;
if(eregi($KeyWord‚ $lines)){
$n++;
}

という形で$nを判断する方法もあります。
応用範囲を考えてこの方法を紹介しました。
「空の変数(配列)を用意する」
という部分が要点です。ご理解ください。"

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

  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
音楽アフィリエイトとサイト運営の効率化を考えるブログ