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

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

解決済みの質問

PHPで検索画面を作成していますが上手に動きません

PHP超!初心者です。よろしくお願いいたします。

行いたい事は、
HTML上にあるドロップダウンリストから項目を選択し実行すると、一致する項目をPHPMysql DBより抽出し表形式で表示したい。です。

PHPmysql→ ユーザー名:user パスワード:passwd データベース名:dbnameテーブル名:table_nm
検索画面→kensaku.html
検索結果→kensaku.php

●kensaku.html
<html>
<head>
<title>検索</title>
</head>
<body>
<br>
<h1>種類</h1>
<br>
<form action = "http://localhost/lesson/kensaku.php" method="POST">
<p>
種類:<br />
<select name="betu" style="width:200" id="search_process">
<option value="" selected="selected">一覧から選択</option>
<option value="あ">あ</option>
<option value="い">い</option>
<option value="う">う</option>
<option value="え">え</option>
<option value="お">お</option>
</select></p>
<p>
   <input type="submit" name="exec" value="検索">
</form>
</body>
</html>


●kensaku.php
<html>
<body>
<?
if (!$con = mysql_connect("localhost", "user", "passwd")) {
   print "接続エラー" ;
   exit ;
}

mysql_select_db("dbname", $con)
$sql = "select sid, name, price, betu, area, memo from table_nm" ;
$sql . = "where betu like '$betu'" ;

if (!$res = mysql_query($sql)) {
   print "SQLエラー<BR>" ;
   exit
}

<table border=1>
<tr>
<th>NO</th><th>名前</th><th>金額</th><th>種別</th>
/tr>
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>
   </tr>
}
</table>

</body>
</html>

説明不足の部分がありましたら、申し訳ございません。

よろしくご教授お願いいたします。

投稿日時 - 2011-05-15 19:05:05

QNo.6739849

すぐに回答ほしいです

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

とりあえず、補足を手直ししたものを書いておきます。
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>

投稿日時 - 2011-05-17 08:16:07

補足

いろいろな書籍のサンプルコードを組み合わせて、別のコーディングで解決できました。(一生懸命対応して下さったのに、スミマセン)
いろいろとありがとうございました。

投稿日時 - 2011-05-18 13:37:43

お礼

お礼が遅くなり、失礼しました。回答ありがとうございました。
コーディング拝見して勉強になりました。

投稿日時 - 2011-05-18 13:30:25

ANo.3

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

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

回答(3)

ANo.2

●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_;

?>

投稿日時 - 2011-05-16 14:30:17

お礼

回答を送って下さり、ありがとうございました。
勉強を始めたばかりで、寄せていただいたコーディングを解読する事も勉強になりました。

投稿日時 - 2011-05-18 13:33:28

ANo.1

このソースコードはそのままコピーしたものですか?
とりあえず、問題点が多いので列挙しておきます。

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

投稿日時 - 2011-05-15 23:42:40

補足

早々に回答していただきまして、ありがとうございます!!
入力ミスを含め、随分ヒドイ状況で問い合わせてしまい、失礼しました。
教えていただいた内容で修正を行いましたが、未だエラーが出ます。
デバック用の設定も上手くできず、再度質問をさせていただけたら・・・と思います。
よろしくお願いいたします。

●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>

投稿日時 - 2011-05-16 10:38:23

あなたにオススメの質問