PHPで空白区切りの絞り込み検索キーワードをSQL文に反映
PHPで絞り込み検索キーワードをSQL分に反映
検索サイトでは下記のように、キーワードに空白を区切って、データを絞り込むようなものが多いと思います。
スペースで区切られた検索キーワードを基に、SQL文を発行します。
以下は、組み立てられたSQL文をweb上に表示させているだけです。実際には、DBに検索するような形になります。まあこんな検索なんてないですけど。SQL構文はなんでもよかったんで気にせず。
explode関数で単語を分割し、分割された単語の分だけwhere句に条件を足していきます。
<html> <head></head> <body> <?php //POST送信されたデータを$text1へ $text1 =@$_POST["text1"]; //SQL(テーブルから列を抽出する $sql ="SELECT 列名 FROM 表名 "; //キーワードが入力されているときはwhere以下を組み立てる if (strlen($text1)>0){ //受け取ったキーワードの全角スペースを半角スペースに変換する $text2 = str_replace(" ", " ", $text1); //キーワードを空白で分割する $array = explode(" ",$text2); //分割された個々のキーワードをSQLの条件where句に反映する $where = "WHERE "; for($i = 0; $i <count($array);$i++){ $where .= "(列名 LIKE '%$array[$i]%')"; if ($i <count($array) -1){ $where .= " AND "; } } } ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="text1"></td> <td><input type="submit" value="検索" name="sub1"></td> </tr> </table> </form> <?php //組み立てたSQL分を表示する echo "<p>組み立てたSQL分: ".$sql.@$where; ?> </body> </html>