[PHP-users 21748]PHP+MySQLのand検索、or検索について

s-miya TQJ00477 @ nifty.ne.jp
2004年 5月 21日 (金) 09:29:54 JST


はじめて投稿します。php初心者です。

環境は
Widows2000server
Apache:2.0.49
OpenSSL:0.97d
MySQL:4.0.14
php:4.3.6

現在、多数のフィールド
(フィールド名は"sisya","nendo","koban","keyword")に対して
フォーム上の1つのtextボックスからand検索、or検索を選択して
検索を行いたいと思っています。

過去のML、書籍などから何とかphpができたと思ったのですが
フォーム上でand、orを選んでもand検索しかしません。
何処が悪いのかを色々調べてはみたのですが、解決には至らない状態です。

よろしくお願いします。

フォームはhtmlファイルで
*****************************
<form action="smp.php" method="post" target="_blank">
<P>キーワード:<INPUT type="text" name="key" size="30">
<INPUT type="submit" value="検索">
<INPUT type="radio" name="AndOr" value="or" checked>OR検索
<INPUT type="radio" name="AndOr" value="and">AND検索</P>
*****************************

これに対してのphpは
*****************************
$key = $_POST['key'];
if ((isset($key) and strlen($key) > 0)) {
         $key = trim($key);
         $key = mb_convert_kana($key, "s");
         $key = str_replace("  "," ",$key);
         if(!strrchr($key," ")){
      $arykey = explode(",", $key);
      $tmpkey = "or";
    }else{
      $arykey = explode(" ", $key);
      $tmpkey = "and";
    }

         $where = " WHERE (( sisya Like '%$arykey[0]%' or nendo Like '%$arykey[0]%' or koban Like '%$arykey[0]%' or key Like '%$arykey[0]%' )";

         for($i = 1; $i < sizeof($arykey); $i++) {
                 $where .= " " . $tmpkey;
                 $where .= " ( bsisya Like '%".$arykey[$i]."%' ";
                 $where .= "OR bnendo Like '%".$arykey[$i]."%' ";
                 $where .= "OR bkoban Like '%".$arykey[$i]."%' ";
                 $where .= "OR bkey Like '%".$arykey[$i]."%') ";
         }
         $where .= ")";
}

$sql = "select * from koban_data" . $where . "order by id'";
$rst = mysql_query("select * from koban_data".$where."order by id", $conn);
print("<table border=\"3\" style=\"empty-cells: show\">");
***************************************


PHP-users メーリングリストの案内