こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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>
---------------------------------------------------
名前で検索した際に違う名前でも全件表示されてしまいます。
完全に一致したら表示させたいのですがやりかたがわかりません。
だれかわかるかたいらっしゃいましたらご教授よろしくお願い
致します。

投稿日時 - 2008-10-08 17:21:50

QNo.4386865

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#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コードの最初の方に記述してあげれば同様の動作が出来たと思います。

参考URL:http://joho.boo.jp/memo/writer.cgi?mode=detail&no=52

投稿日時 - 2008-10-09 01:58:57

ANo.1

$nameではなくて$_POST['name']でしょ

投稿日時 - 2008-10-08 17:59:02

あなたにオススメの質問