フリーワードで検索すると、必ずしも検索結果があるとは限りません。ヒットした数を「n件」と表示したり、何もヒットしないときは「見つかりませんでした」と表示できるようにしてみましょう。
検索結果がゼロの時はどうしたら良いでしょうか?単純に「ifの反対はelse」というふうにすると
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。
僕が使っているサーバーとドメイン管理のレジストラーです。
§検索結果がゼロの場合の処理
フリーワードで検索すると、必ずしも検索結果があるとは限りません。
ヒットした数を「n件」と表示したり、何もヒットしないときは「見つかりませんでした」
と表示できるようにしてみましょう。
空の変数を用意する
検索結果がゼロの時はどうしたら良いでしょうか?
単純に「ifの反対はelse」というふうにすると
print"見つかりました。";
}else{
print"見つかりませんでした。";
}
これを実行すると
こんな感じで一行ごとに成否の結果が表示されてしまいます。
簡単そうで難しいですね。
これを解決するには「一旦ヒットしたデータを別の配列に移し変えてその配列を読み込む」という風にすれば良いでしょう。
$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を使って表示部分を作ります。
$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を展開しページへのリンクを生成します。
==
回りくどい方法を紹介しましたが、単に
if(eregi($KeyWord‚ $lines)){
$n++;
}
という形で$nを判断する方法もあります。
応用範囲を考えてこの方法を紹介しました。
「空の変数(配列)を用意する」
という部分が要点です。ご理解ください。
プログラムのご使用による損害は直接、間接に関わらず一切の責任をもちません。ご使用は自己責任でお願いします。