みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

解決済みの質問

フォーム受け渡しからのSELECT

初めて投稿します。
DreamWeaverを使ってPHP+MySQLでDBを作っております。ログ表示部分まで完成して検索用のhtmlフォームから条件を指定して検索結果のみをSELECTして表示させたいのですが、どうしても全データが表示されてしまいます。

検索フォーム
<form method="post" action="view.php">
<input type="text" name="test">
<div align="left"></div>
<input type="submit" name="search" value="検索">
</form>



ログ表示PHP(view.php)
session_start();

if ($_POST['search'] == "") {
$wh = $_SESSION['wh'];
} else {
if ($cupon != "") {
$and = ($wh == "") ? ("") : (" and ");
$wh .= $and . "test like '%$test%'";
}
if ($wh != "") {
$wh = "where " . $wh;
}
$_SESSION['wh'] = $wh;
}
~~~~~~~~~~~~~~~
mysql_select_db($database_connTestDB, $connTestDB);
$query_rsTestDB = "SELECT * FROM test_db $wh ORDER BY updtime DESC";
$query_limit_rsTestDB = sprintf("%s LIMIT %d, %d", $query_rsTestDB, $startRow_rsTestDB, $maxRows_rsTestDB);......

投稿日時 - 2005-01-18 02:30:42

QNo.1173190

すぐに回答ほしいです

質問者が選んだベストアンサー

まずは、#2さんのおっしゃられるように、

SQLクエリは返ってきているわけですから、
SQLが正しいか、このソースの最後に、
var_dump($query_rsTestDB);
とでも書いてみて、生成されたSQL文がどのような状態かが第一歩です。

でも、ソースを見るかぎり、$testに値が入っていないことが原因だと思います。

まず、
$testを使う前に、
$test = $_POST['test'];
でPOSTされたテキストボックスの値をとってこないと
$testの中身は空だと思います。

(PHPの設定によってはこれは不要ですが、今のPHP4のデフォルトの設定だとこう書かないと、POSTされた値を取得できません。)

投稿日時 - 2005-01-18 12:50:49

お礼

$test = $_POST['test'];
を入れたら上手く行きました!

参考にした本がrequireで読み込んでいるのに気づきませんでした。

投稿日時 - 2005-01-18 13:31:32

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

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

回答(3)

ANo.2

発行されたSQL文をPrintすれば分かると思います。
変数を代入させた形でないと分かりませんよ。

投稿日時 - 2005-01-18 10:49:02

補足

ありがとうございます。
さっそく試してみたのですがやはり検索条件がまったく入ってない状態でした・・・。
SELECT * FROM test_db ORDER BY updtime DESC
2冊の本を参考にしていて検索部分だけ違う本を参照して作っているからでしょうか・・・。

投稿日時 - 2005-01-18 13:12:54

お礼

ありがとうございます。後からやっと意味が理解できました!

投稿日時 - 2005-01-18 13:32:54

ANo.1

こんにちは。

詳細がわからないので確認させてください。
検索フォーム[test]の値は受け取ってますでしょうか。
・$test=$_POST['test'];

$cuponは何が入ってくるのか。

最終的に形成したSQLを表示させてどのような
SQLが発行されているか見てみると、なぜ全件
取得してしまうか原因がつかめると思います。

思った通りのSQLが発行されなければ、SQLを作っている
ロジックが違うということになります。

投稿日時 - 2005-01-18 08:32:19

補足

すいません入力ミスでした$cuponは$testでした。

投稿日時 - 2005-01-18 11:33:07

あなたにオススメの質問