- ベストアンサー
フォーム受け渡しからの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);......
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まずは、#2さんのおっしゃられるように、 SQLクエリは返ってきているわけですから、 SQLが正しいか、このソースの最後に、 var_dump($query_rsTestDB); とでも書いてみて、生成されたSQL文がどのような状態かが第一歩です。 でも、ソースを見るかぎり、$testに値が入っていないことが原因だと思います。 まず、 $testを使う前に、 $test = $_POST['test']; でPOSTされたテキストボックスの値をとってこないと $testの中身は空だと思います。 (PHPの設定によってはこれは不要ですが、今のPHP4のデフォルトの設定だとこう書かないと、POSTされた値を取得できません。)
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
発行されたSQL文をPrintすれば分かると思います。 変数を代入させた形でないと分かりませんよ。
お礼
ありがとうございます。後からやっと意味が理解できました!
補足
ありがとうございます。 さっそく試してみたのですがやはり検索条件がまったく入ってない状態でした・・・。 SELECT * FROM test_db ORDER BY updtime DESC 2冊の本を参考にしていて検索部分だけ違う本を参照して作っているからでしょうか・・・。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 詳細がわからないので確認させてください。 検索フォーム[test]の値は受け取ってますでしょうか。 ・$test=$_POST['test']; $cuponは何が入ってくるのか。 最終的に形成したSQLを表示させてどのような SQLが発行されているか見てみると、なぜ全件 取得してしまうか原因がつかめると思います。 思った通りのSQLが発行されなければ、SQLを作っている ロジックが違うということになります。
補足
すいません入力ミスでした$cuponは$testでした。
お礼
$test = $_POST['test']; を入れたら上手く行きました! 参考にした本がrequireで読み込んでいるのに気づきませんでした。