[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 メーリングリストの案内