- 締切済み
PHP 検索PG
いつもお世話になっております。 PHP勉強中の初心者です。今回検索PGの作成を試みているのですがうまく検索されません。わかる人がいましたらお力を貸して下さい。 ------------------------------- 環境 レンタルサーバー:カゴヤ PHP 5.2.6 Apache/1.3.41 MySQLバージョン 5.0.33 -------------PHP----------------- <?php $debug = false; //DB接続 require_once("DB.php"); // データベースとの接続情報を記述 //$dsn ="mysql://ユーザー名:pw@localhost/データベース名"; //$db =DB::connect($dsn); if($debug) print_r($HTTP_POST_VARS); //クエリ生成 $query = "SELECT * FROM search "; //検索条件生成 //名前 if(!empty($name)) { $name = addslashes($name); $where = "name = '$name'"; } 住所 if(!empty($address)) { $address = addslashes($address); $where .= "address REGEXP '$address' && "; } //性別 if(!empty($gender)) { $gender = addslashes($gender); $where .= "gender = '$gender' && "; } //スキル if(!empty($skill)) { foreach($skill as $value) { $value = addslashes($value); $temp_where .= "skill REGEXP '$value' || "; } $temp_where = substr($temp_where, 0, -4); $where .= "(". $temp_where. ") && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $query .= $where; if($debug) { print "<BR><BR>"; print $query; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>名前</td><td>住所</td><td>性別</td><td>スキル</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[name]?></td><td><?=$row[address]?></td><td><?=$row[gender]?></td><td><?=$row[skill]?></td></tr> <? endwhile; ?> </table> <a href="input.html">再検索</a> ------------------------------- ----------html----------------- <html> <body bgcolor="#FFFFFF" text="#000000"> <form name="" method="POST" action="search.php"> 検索条件を指定してください<br> <table width="500" border="1" cellspacing="1" cellpadding="0"> <tr> <td>名前</td> <td> <input type="text" name="name" size="40" maxlength="255"> </td> </tr> <tr> <td>住所</td> <td> <input type="text" name="address" size="40" maxlength="255"> </td> </tr> <tr> <td>性別</td> <td> <input type="radio" name="gender" value="男性"> 男性 <br> <input type="radio" name="gender" value="女性"> 女性<br> <input type="radio" name="gender" value="その他"> その他</td> </tr> <tr> <td>スキル</td> <td> <input type="checkbox" name="skill[0]" value="ワープロ"> ワープロ<br> <input type="checkbox" name="skill[1]" value="表計算"> 表計算<br> <input type="checkbox" name="skill[2]" value="プログラミング"> プログラミング<br> <input type="checkbox" name="skill[3]" value="営業"> 営業<br> <input type="checkbox" name="skill[4]" value="音楽"> 音楽</td> </tr> </table> <input type="submit" name="submit" value="検索"> <input type="reset" value="条件クリア"> </form> </body> </html> --------------------------------------------------- 名前で検索した際に違う名前でも全件表示されてしまいます。 完全に一致したら表示させたいのですがやりかたがわかりません。 だれかわかるかたいらっしゃいましたらご教授よろしくお願い 致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- t_netbug
- ベストアンサー率34% (15/44)
#1の方も書かれていますが <input type="hidden" name="name" value="a"> などの場合、$_POST あるいは$_GETで取得します。 何かの書籍を読んでいるものと思いますが、register_globalsという設定がonになっている時であれば、問題なく動作します。 register_globalsがonだと、セキュリティ上、問題が発生しやすい為、お奨めしません。 http://d.hatena.ne.jp/mokehehe/20070603/register_globals ネットに公開はしないけど一時的にregister_glovalsをonにしたのと同様の動作をさせたい、というのであれば extract($_POST); extract($_GET); とphpコードの最初の方に記述してあげれば同様の動作が出来たと思います。
- gau_puzzler
- ベストアンサー率48% (39/81)
$nameではなくて$_POST['name']でしょ