- 締切済み
キーワード検索でスクリプトを使用しない方法は!?
<SCRIPT LANGUAGE="PHP"> // 検索用関数 Function Search_Pattern($record,$pattern) { for($loop = 0;$loop < count($pattern);$loop++) { if($pattern[$loop] == "") continue; if(!ereg($pattern[$loop],$record)) return 0; } return 1; } // メインプログラム if($search) { if(!$keyword) { $error = "キーワードが入力されていません"; $search = ""; } } if($search) { $fp = @fopen("search_csv.csv","r"); if(!$fp) { $error = "該当ファイルを参照できません"; $search = ""; } } </SCRIPT> <HTML> <HEAD> <META Http-Equiv="Content-Type" Content="text/html;charset=SHIFT-JIS"> <TITLE>ファイル簡易検索</TITLE> </HEAD> <BODY> <B>ファイル簡易検索</B> <BR> <CENTER> <FORM ACTION="search_csv.php" METHOD="post"> <INPUT TYPE="hidden" NAME="search" VALUE="検索する"> キーワード: <INPUT TYPE="text" NAME="keyword" VALUE="<? echo $keyword; ?>" SIZE="30"> <INPUT TYPE="submit" NAME="search" VALUE="検索する"> </FORM> <FONT COLOR="#FF0000"><? echo $error; ?></FONT> <HR> <P> <SCRIPT LANGUAGE="PHP"> if($search) { echo "<TABLE BORDER=1>\n"; while(!feof($fp)) { $buff = fgets($fp,255); $title .= $buff; if(ereg("\n",$buff)) break; } $title = ereg_replace("\x0A","",$title); $column = split(",",$title); echo "<TR>\n"; for($loop = 0;$loop < count($column);$loop++) { echo '<TD BGCOLOR="#00FFFF" NOWRAP>',$column[$loop],"</TD>\n"; } echo '<TD BGCOLOR="#00FFFF" NOWRAP>'; echo '詳細'; echo "</TD>\n"; echo "</TR>\n"; $keyword = ereg_replace(" "," ",$keyword); $pattern = split(" ",$keyword); while(1) { $line = ""; while(!feof($fp)) { $buff = fgets($fp,255); $line .= $buff; if(ereg("\n",$buff)) break; } if($line == "") break; if(!Search_Pattern($line,$pattern)) continue; $line = ereg_replace("\x0A","",$line); $column = split(",",$line); echo "<TR>\n"; echo "<FORM method=\"post\" action=\"./formdb_modify.php\">\n"; echo "<INPUT type=\"hidden\" name=\"data_no\" value=\"".$column[0]."\">\n"; for($loop =0; $loop< count($column);$loop++) { echo "<TD nowrap><FONT size=-1>" . $column[$loop] . "</FONT></TD>\n"; //echo "<TD nowrap><FONT size=-1>" . $column[1] . "</FONT></TD>\n"; //echo "<TD nowrap><FONT size=-1>" . $column[2] . "</FONT></TD>\n"; //echo "<TD nowrap><FONT size=-1>" . $column[3] . "</FONT></TD>\n"; } echo "<TD nowrap><INPUT type=\"submit\" value=\" 詳細\"></TD>\n"; echo "</FORM>\n"; echo "</TR>\n"; } fclose($fp); echo "</TABLE>\n"; } else { echo "キーワードを入力し、検索ボタンを押すと検索結果がここに表示されます。\n"; } </SCRIPT> <P> <FONT SIZE=2><I> Copyright (C) 2009 All right reserved by <A HREF="http://ameblo.jp/access-db/">Access Company</A> </I></FONT> </CENTER> </BODY> </HTML> 上記、スクリプトを使用しての検索ですが スクリプトを使用せずにphpだけで検索できないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Mocchi113
- ベストアンサー率83% (5/6)
スクリプトを見ると、ユーザが入力してサーバに送信するデータは「search」と「keyword」の2つのようですね。スクリプト内ではこの2つは、それぞれ$searchと$keywordという変数で利用するようになってますが、肝心のユーザ入力値が代入されていません。 原因は、この2つの情報をスクリプトが利用していないことにあります。 なので、ユーザ入力値を代入するコードを追加してあげてください。 ただし、ユーザからの入力値をちゃんとチェックするコードも追加しないと、最悪、サーバ全体が危険な状態に陥る可能性もありますので、気をつけてください。 http://www.phppro.jp/phpmanual/php/tutorial.forms.htmlでフォームの処理のチュートリアルを読むことができるので、勉強がてら、どうぞ。
- Mocchi113
- ベストアンサー率83% (5/6)
PHPはサーバサイドで動く「スクリプト」です。 なので、「スクリプトを使用せずにphpだけで検索できないでしょうか?」という表現は、「PHPを使わない」で「PHPだけで」検索できないか?と言っているのと同じことなので、あなたの質問に対して、みんな戸惑っているみたい。 PHPマニュアルのHTMLからの脱出 (http://php.benscom.com/manual/ja/language.basic-syntax.phpmode.php)にありますが、PHPの書き方(宣言)には、大まかに言って2種類あります。 ひとつがコードを「<?php ?>」で囲む方法。こちらはメジャーな方法です。 もうひとつがあなたの言う「<script language="php"></script>」です。実は、こちらはあまり見かけません。 マニュアルによると、この2つの方法はどちらも常に利用可能です。が、はじめの「<?php ?>」が「もっとも一般的で推奨される方法」らしいです。 さて、上記をふまえてもう一度コードを見返してみると、大丈夫。このコードを含んだHTMLは、ちゃんとサーバでPHPとして処理されています。ウェブブラウザが処理しているわけではありませんので、ご安心を。 最後になりますが、私も今回調べてみるまで、「<script language="php"></script>」という記法が存在していること、それが実は常に利用可能なものだということを知らなかったので、勉強になりました。 今後もいろいろトラブルに見舞われると思いますが、そんなときは、マニュアルと仲良くしてみることをお勧めします。
お礼
ありがとうございます。 安心したのは良いのですが.... 何故、検索しても結果が表示されないのは 何故なのでしょうか? http://www12.atpages.jp/accesscom/search_csv.php が実行URLです。