- ベストアンサー
PHPで検索画面を作成していますが上手に動きません
- HTML上にあるドロップダウンリストから項目を選択し実行すると、一致する項目をPHPMysql DBより抽出し表形式で表示したい。
- kensaku.htmlでは、種類を選択するドロップダウンリストがあり、その値をkensaku.phpに送信し、該当するデータを抽出して表形式で表示します。
- kensaku.phpでは、受け取った値を条件としてデータベースから抽出し、結果を表形式で表示します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、補足を手直ししたものを書いておきます。 sprintfの使い方と、phpタグの使い方に注意してください。 <html> <body> <?php // betuを設定、初期値は'あ' $betu = (isset($_REQUEST['betu']) ? $_REQUEST['betu'] : 'あ'); //データベースに接続 $con = mysql_connect("localhost", "user", "passwd"); //データベースを選択 mysql_select_db("sake", $con); //フォームで送られてきた条件を元にSELECT文を作成 $sql = sprintf("select sid, name, price, betu, area from table_nm where betu='%s'", mysql_real_escape_string($betu)); //SELECT文を実行 $res = mysql_query($sql); ?> <?php //検索結果表示 ?> <table border=1> <tr> <th>NO</th><th>名前</th><th>金額</th><th>種別</th><th>コメント</th> </tr> <?php while($row = mysql_fetch_array($res)): ?> <tr> <td><?php ($row['sid']); ?></td> <td><?php ($row['name']); ?></td> <td><?php ($row['price']); ?></td> <td><?php ($row['betu']); ?></td> <td><?php ($row['memo']); ?></td> </tr> <?php endwhile; ?> </table> </body> </html>
その他の回答 (2)
- ks0902
- ベストアンサー率85% (6/7)
●kensaku.php <?php //データベースに接続 if (!$con = mysql_connect("localhost", "user", "passwd")) { echo "DB connect error"; } //データベースを選択 if (!mysql_select_db("sake", $con)) { echo "DB select error"; } //フォームで送られてきた条件を元にSELECT文を作成 $sql = "select sid, name, price, betu, area from table_nm where betu like '%betu'"; //SELECT文を実行 if (!$res = mysql_query($sql)) { echo "DB query error"; } //検索結果表示 echo <<<_HTML_ <html> <body> <table border=1> <tr> <th>NO</th> <th>名前</th> <th>金額</th> <th>種別</th> <th>コメント</th> </tr> _HTML_; while ($row = mysql_fetch_array($res)) { echo <<<_HTML_ <tr> <td>{$row['sid']}</td> <td>{$row['name']}</td> <td>{$row['price']}</td> <td>{$row['betu']}</td> <td>{$row['memo']}</td> </tr> _HTML_; } echo <<<_HTML_ </table> </body> </html> _HTML_; ?>
お礼
回答を送って下さり、ありがとうございました。 勉強を始めたばかりで、寄せていただいたコーディングを解読する事も勉強になりました。
- shiren2
- ベストアンサー率47% (139/295)
このソースコードはそのままコピーしたものですか? とりあえず、問題点が多いので列挙しておきます。 kensaku.php 3行目: 開始コードは<?ではなく<?php 9行目: セミコロンが抜けている ; 11行目: SQLインジェクションの脆弱性 mysql_real_escape_string 15行目: セミコロンが抜けている ; 17行目: PHP終了タグが抜けている ?> 22行目: PHPタグが抜けている <?php ... ?> Webサーバーがインストール済みなら、とりあえず実行してみて、エラーを叩いていく方が早いと思います。 ・デバッグ用の設定 http://xpressengine-jp.com/index.php?document_srl=1708&mid=textyle&vid=raku ・mysql_real_escape_string http://php.net/manual/ja/function.mysql-real-escape-string.php
補足
早々に回答していただきまして、ありがとうございます!! 入力ミスを含め、随分ヒドイ状況で問い合わせてしまい、失礼しました。 教えていただいた内容で修正を行いましたが、未だエラーが出ます。 デバック用の設定も上手くできず、再度質問をさせていただけたら・・・と思います。 よろしくお願いいたします。 ●kensaku.php <html> <body> <?php //データベースに接続 $con = mysql_connect("localhost", "user", "passwd"); //データベースを選択 mysql_select_db("sake", $con); //フォームで送られてきた条件を元にSELECT文を作成 $sql = sprintf("select sid, name, price, betu, area from table_nm where betu='%betu'" , mysql_real_escape_string($betu)); //SELECT文を実行 $res = mysql_query($sql); ?> //検索結果表示 <table border=1> <tr> <th>NO</th><th>名前</th><th>金額</th><th>種別</th><th>コメント</th> /tr> <?php while($row = mysql_fetch_array($res)){ <tr> <td><?php ($row['sid']); ?></td> <td><?php ($row['name']); ?></td> <td><?php ($row['price']); ?></td> <td><?php ($row['betu']); ?></td> <td><?php ($row['memo']); ?></td> </tr> } ?> </table> </body> </html>
お礼
お礼が遅くなり、失礼しました。回答ありがとうございました。 コーディング拝見して勉強になりました。
補足
いろいろな書籍のサンプルコードを組み合わせて、別のコーディングで解決できました。(一生懸命対応して下さったのに、スミマセン) いろいろとありがとうございました。