質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

769閲覧

phpとMYsqlで絞り込み検索を作りたい

tatuki81

総合スコア3

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2020/06/11 02:20

前提・実現したいこと

phpで絞り込み検索機能を作ろうとしたらエラーが発生しました。
htmlで条件を指定してphpでその情報を受け取ってmysql上の該当のデータを表示させたいです。

PHP:5.6

発生している問題・エラーメッセージ

SELECT * FROM table_5 WHERE trade_date=:trade_date検索結果は0件です。 検索結果がありません。

該当のソースコード

php

1 2<?php 3 4// 1.データベースに接続 5$dsn = 'mysql:host=mysql;dbname=JEPX datebase'; 6$user = 'root'; 7$password = 'root'; 8 9try { 10 $pdo = new PDO($dsn, $user, $password); 11 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 12 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 13} catch (PDOException $Exception) { 14 die('エラー :'.$Exception->getMessage()); 15} 16 17 18// 2.PDOの変数を設定 19$trade_date = $_POST['trade_date']; 20// print_r($trade_date); 21// exit(); 22$time_code = $_POST['time_code']; 23$area_price_hokkaido = $_POST['area_price_hokkaido']; 24$area_price_tohoku = $_POST['area_price_tohoku']; 25$area = $_POST['area_price_tokyo']; 26$area = $_POST['area_price_tyubu']; 27$area = $_POST['area_price_hokuriku']; 28$area = $_POST['area_price_kansai']; 29$area = $_POST['area_price_tyugoku']; 30$area = $_POST['area_price_sikoku']; 31$area = $_POST['area_price_kyusyu']; 32$trade_buy = $_POST['trade_buy']; 33$trade_sale = $_POST['trade_sale']; 34$system_price_1 = $_POST['system_price_1']; 35$system_price_2 = $_POST['system_price_2']; 36 37try { 38 $sql = "SELECT * FROM table_5 WHERE trade_date=:trade_date AND 39 time_code=:time_code AND area_price_hokkaido=:area_price_hokkaido AND 40 area_price_tohoku=:area_price_tohoku AND area_price_tokyo=:area_price_tokyo AND 41 area_price_tyubu=:area_price_tyubu AND area_price_hokuriku=:area_price_hokuriku AND 42 area_price_kansai=:area_price_kansai AND area_price_tyugoku=:area_price_tyugoku AND 43 area_price_sikoku=:area_price_sikoku AND area_price_kyusyu AND 44 (trade_buy=:trade_buy AND trade_buy>=$system_price_1 AND trade_buy<=$system_price_2)OR(trade_sale=:trade_sale AND trade_sale>=$system_price_1 AND trade_sale<=$system_price_2)"; 45 $sql = "SELECT * FROM table_5 WHERE trade_date=:trade_date"; 46 print_r($sql); 47 print_r($trade_date); 48 49 // exit(); 50 $stmt = $pdo->prepare($sql); 51 $stmt->bindValue(':trade_date', $trade_date,PDO::PARAM_STR); 52 // $stmt->bindValue(':time_code', $time_code,PDO::PARAM_INT); 53 // $stmt->bindValue(':area_price_hokkaido', $area_price_hokkaido,PDO::PARAM_INT); 54 // $stmt->bindValue(':area_price_tohoku', $area_price_tohoku,PDO::PARAM_INT); 55 // $stmt->bindValue(':area_price_tokyo', $area_price_tokyo,PDO::PARAM_INT); 56 // $stmt->bindValue(':area_price_tyubu', $area_price_tyubu,PDO::PARAM_INT); 57 // $stmt->bindValue(':area_price_hokuriku', $area_price_hokuriku,PDO::PARAM_INT); 58 // $stmt->bindValue(':area_price_kansai', $area_price_kansai,PDO::PARAM_INT); 59 // $stmt->bindValue(':area_price_tyugoku', $area_price_tyugoku,PDO::PARAM_INT); 60 // $stmt->bindValue(':area_price_sikoku', $area_price_sikoku,PDO::PARAM_INT); 61 // $stmt->bindValue(':area_price_kyusyu', $area_price_kyusyu,PDO::PARAM_INT); 62 // $stmt->bindValue(':trade_buy', $trade_buy,PDO::PARAM_INT); 63 // $stmt->bindValue(':trade_sale', $trade_sale,PDO::PARAM_INT); 64 $stmt->execute(); 65 $count = $stmt->rowCount(); 66 print "検索結果は".$count."件です。<BR>"; 67} catch(PDOException $Exception){ 68 print "エラー :".$Exception->getMessage(); 69} 70 71if($count < 1){ 72 print "検索結果がありません。<BR>"; 73}else{ 74?> 75 76<TABLE width="450" border="1" cellspacing="0" cellpadding="8"> 77<TBODY> 78<TR> 79 <TH>年月日</TH> 80 <TH>時刻コード</TH> 81 <TH>売り入札量(kWh)</TH> 82 <TH>買い入札量(kWh)</TH> 83 <TH>約定総量(kWh)</TH> 84 <TH>システムプライス(円/kWh)</TH> 85 <TH>エリアプライス北海道(円/kWh)</TH> 86 <TH>エリアプライス東北(円/kWh)</TH> 87 <TH>エリアプライス東京(円/kWh)</TH> 88 <TH>エリアプライス中部(円/kWh)</TH> 89 <TH>エリアプライス北陸(円/kWh)</TH> 90 <TH>エリアプライス関西(円/kWh)</TH> 91 <TH>エリアプライス中国(円/kWh)</TH> 92 <TH>エリアプライス四国(円/kWh)</TH> 93 <TH>エリアプライス九州(円/kWh)</TH> 94 <TH>スポット・時間前平均価格(円/kWh)</TH> 95</TR> 96 97<?php 98 while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 99?> 100<TR> 101<TD align = 'center'><?=htmlspecialchars($row['id'])?></TD> 102<TD><?=htmlspecialchars($row['target_date'])?></TD> 103<TD><?=htmlspecialchars($row['time_code'])?></TD> 104<TD><?=htmlspecialchars($row['trade_date'])?></TD> 105<TD><?=htmlspecialchars($row['trade_sale'])?></TD> 106<TD><?=htmlspecialchars($row['trade_buy'])?></TD> 107<TD><?=htmlspecialchars($row['trade_total'])?></TD> 108<TD><?=htmlspecialchars($row['system_price'])?></TD> 109<TD><?=htmlspecialchars($row['area_price_hokkaido'])?></TD> 110<TD><?=htmlspecialchars($row['area_price_tohoku'])?></TD> 111 112</TR> 113<?php 114 } 115?> 116</TBODY></TABLE> 117 118<?php 119} 120?> 121 122</BODY> 123</HTML>

HTML

1<!-- ここから検索フォーム --> 2 <form class="searchPanel" action='pdo_search.php' method='post'> 3 <div class="wrapper"> 4 <dl class="data" name='trade_date'> 5 <dt> 6 <h3>日付</h3> 7 </dt> 8 <dd id="fx1"> 9 <div class="selectBox" > 10 <select id="month"> 11 <option value="1">1</option> 12 <option value="2">2</option> 13 <option value="3">3</option> 14 <option value="4" selected>4</option> 15 <option value="5">5</option> 16 <option value="6">6</option> 17 <option value="7">7</option> 18 <option value="8">8</option> 19 <option value="9">9</option> 20 <option value="10">10</option> 21 <option value="11">11</option> 22 <option value="12">12</option> 23 </select> 24 </div> 25 <span>月</span> 26 <div class="selectBox" > 27 <select id="day"> 28 <option value="1">1</option> 29 <option value="2">2</option> 30 <option value="3">3</option> 31 <option value="4">4</option> 32 <option value="5">5</option> 33 <option value="6">6</option> 34 <option value="7">7</option> 35 <option value="8">8</option> 36 <option value="9">9</option> 37 <option value="10">10</option> 38 <option value="11">11</option> 39 <option value="12">12</option> 40 <option value="13">13</option> 41 <option value="14">14</option> 42 <option value="15">15</option> 43 <option value="16">16</option> 44 <option value="17">17</option> 45 <option value="18">18</option> 46 <option value="19">19</option> 47 <option value="20">20</option> 48 <option value="21">21</option> 49 <option value="22">22</option> 50 <option value="23">23</option> 51 <option value="24">24</option> 52 <option value="25">25</option> 53 <option value="26">26</option> 54 <option value="27">27</option> 55 <option value="28">28</option> 56 <option value="29">29</option> 57 <option value="30">30</option> 58 <option value="31">31</option> 59 </select> 60 </div> 61 <span>日</span> 62 </dd> 63 </dl> 64 65</html>

試したこと

print_r($trade_date);
exit();
でPOSTされているか確認したが受け取れていない

補足情報(FW/ツールのバージョンなど)

docker
php:5.6-apache
phpmyadmin
mysql:5.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

inputやselectなど、フォーム入力要素としてname=trade_dateがHTMLに存在していません。

フォームの処理

投稿2020/06/11 02:24

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatuki81

2020/06/11 03:03

回答の通りselectタグ一つずつにname,action,methodをつけたらpostを受け取れました。 ありがとうございました。
m.ts10806

2020/06/11 03:11

提示したURLは見られたのでしょうか。 あと、HTMLの基本的なところすが、action,methodはおまじないではありません。 formタグにのみつけます。
tatuki81

2020/06/11 04:33

urlみました。 <form action='' method=''> <select></select> </form> でいいのでしょうか?
m.ts10806

2020/06/11 05:47

そのあたりはHTMLの仕様をMDNのサイトなどでおさえてください。 公式またはそれに準じるドキュメントを確認する癖をつけたほうが良いです。それだけで質問することなく進めるようになります。
m.ts10806

2020/06/11 05:48

それに、既にサポート切れて久しいバージョンを利用し続けるのは悪手でしかありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問