※ ChatGPTを利用し、要約された質問です(原文:検索ワードを(1)クリアされないようにしたい、(2) スペース区切りしたい)
PHPとMySQLで簡単な検索システムを作成する方法とセッションの管理方法について
このQ&Aのポイント
PHPとMySQLで簡単な検索システムを作成する初心者の質問に対して、セッションを使用してキーワードを保持する方法や、AND条件での絞り込みを実現する方法について解説します。
001.htmから検索し、002.php結果がリストアップされると、002.phpにある検索フォームに入力したキーワードはが当然クリアされています。また、002.phpから再検索しても、同じくクリアされてしまいます。テキストフィールドに入力した内容を残す(引き継ぐ)方法についての解決策を説明します。
現在の検索フォームの仕組みでは、1つのキーワードに対して1つのテキストフィールドを使用しています。しかし、Web検索のように、テキストをスペースで区切ってAND条件でつなぐ方法が可能かどうかについても考察します。
検索ワードを(1)クリアされないようにしたい、(2) スペース区切りしたい
◆ 環境:
PHP 5.0.3
MySQL 4.0.14b(Win)(←古いこと承知)
IIS 5.1
◆ 背景
質問 No.1212008にも書きましたが、PHP+MySQLで簡単な検索システムを
作っている初心者です。
・001.htm に設置したこの検索フォームからPOSTすると
・002.php に渡され、これがHTMLを組み立てて検索結果を表示します。
・002.php には、001.htmと同じ検索フォームを設置してあります。
・検索フォームは name="1" ~ "4" までのテキストフィールドと検索ボタンで、
次のようなSQL文でWHERE文を構成しています。
$sql = "select * from t_url where (fullpass like '%$title1%')";
if (strlen($title2) > 0) {
$sql .= " and (fullpass like '%$title2%')";
}
if (strlen($title3) > 0) {
$sql .= " and (fullpass like '%$title3%')";
}
if (strlen($title4) > 0) {
$sql .= " and (fullpass like '%$title4%')";
}
◆ 質問は2点です。
(1)
001.htmから検索し、002.php結果がリストアップされると、
002.phpにある検索フォームに入力したキーワードはが当然クリアされています。
また、002.php から再検索しても、同じくクリアされてしまいます。
いずれの場合にも、テキストフィールドに入力した内容を残す(引き継ぐ)ことは
可能でしょうか?PHPとかJavascriptとかで実現方法はあるのかもしれませんが
ちょっと見当がつきません。
(2)今は1フォーム・1キーワード×4テキストフィールドなので4ワードまでは
AND条件で絞り込みできますが、
Web検索ライクに、検索フォームのテキストは1つ、全角&半角スペースで区切った
キーワードがAND条件でつながるようにするのも敷居高いでしょうか。
アドホックな感じがするので、何とかできたらと思うのですが。
よろしくお願い致します。
お礼
constさん、ご教示ありがとうございます。 すばらしいです。 完璧です! これらは絞込の可否に関わってきますので、 非常に大きいです。 本当にありがとうございました。