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

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

解決済みの質問

PHPとMySQL 検索フォームを作りたい。

PHPとMySQLを使って商品一覧を作りました。

◆商品一覧表 http://pips.chu.jp/0/07/index.php
<?php
function connect() {
return new PDO("mysql:dbname=★.★","★","★",
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`"));
}
$pdo = connect();
$st = $pdo->query("SELECT * FROM shohin");
$shohin = $st->fetchAll();
?>   
<TABLE border="1">
<tr>
<th>商品番号</th>
<th>商品名</th>
<th>分類</th>
<th>販売単価</th>
<th>仕入単価</th>
<th>登録日</th>
</tr>
<?php foreach ($shohin as $g) { ?>
<tr>
<td><?php echo $g['id'] ?></td>
<td><?php echo $g['name'] ?></td>
<td><?php echo $g['bunrui'] ?></td>
<td class="td-price"><?php echo number_format ($g['htanka']) ?></td>
<td class="td-price"><?php echo number_format ($g['stanka'])?></td>
<td><?php echo $g['day'] ?></td>
</tr>
<?php } ?>
</TABLE>


◆特定の商品一覧表 http://pips.chu.jp/0/07/irui.php

$st = $pdo->query("SELECT * FROM shohin");の部分を
$st = $pdo->query("SELECT * FROM shohin WHERE bunrui='衣類' ");に変更すると
分類が衣類だけの表になります。

◆入力フォーム http://pips.chu.jp/0/07/form.php

<form action = "kensaku.php" method="post">
   分類:<input type="text" name="bunrui">
   <input type="submit" name="submit" value="検索">
</form>
こんな感じの入力フォームを作り、分類名を入力すると、その分類名の一覧表に反映されるようにしたいです。

◆検索された一覧表 http://pips.chu.jp/0/07/kensaku.php

<?php
function connect() {
return new PDO("mysql:dbname=★.★","★","★",
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`"));
}
$pdo = connect();
$st = $pdo->query("SELECT * FROM shohin WHERE bunrui='?' ");
$shohin = $st->fetchAll();
?>   
<TABLE border="1">
<tr>
<th>商品番号</th>
<th>商品名</th>
<th>分類</th>
<th>販売単価</th>
<th>仕入単価</th>
<th>登録日</th>
</tr>
<?php foreach ($shohin as $g) { ?>
<tr>
<td><?php echo $g['id'] ?></td>
<td><?php echo $g['name'] ?></td>
<td><?php echo $g['bunrui'] ?></td>
<td class="td-price"><?php echo number_format ($g['htanka']) ?></td>
<td class="td-price"><?php echo number_format ($g['stanka'])?></td>
<td><?php echo $g['day'] ?></td>
</tr>
<?php } ?>
</TABLE>


「入力フォーム」と「検索された一覧表」のソースの書き方がわかりません。
どのようにけば実現するでしょうか。
まだ初心者なので、本やサイトを調べながら見よう見まねでやっています。
具体的に、どの部分を書き換えればよいか教えていただければ有難いです。

よろしくお願いします。

投稿日時 - 2012-10-14 07:20:37

QNo.7747598

困ってます

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

一番手っ取り早いのは
$st = $pdo->query("SELECT * FROM shohin WHERE bunrui='?' ");

$st = $pdo->query("SELECT * FROM shohin WHERE bunrui='" . $_POST["bunrui"] . "' ");
にすれば動きませんか?
(入力フォームに何かしら文字を入れないと、何も出力されないでしょうけど…)

あとは
・SQL実行前に入力値(POST値)のチェックを行う
・SQL実行時はプレースホルダを使う
・DB接続時、SQL実行時のエラーチェックを行う
を実装すれば、とりあえず大丈夫かと。

※全然的外れなことを言ってましたらスミマセン。

投稿日時 - 2012-10-27 00:09:50

お礼

hyter様

ありがとうございました!
ご回答の通りにソースを書き換えたら解決しました!

はじめて投稿して勝手がよくわからず、お礼が遅くなってしまい申し訳ありませんでした。

今後もがんばって勉強しますので、また機会がありましたら教えてください。

本当にありがとうございました。

投稿日時 - 2012-10-29 09:55:38

ANo.1

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

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

回答(1)