前提・実現したいこと
プルダウンで日付を選択し、一致するデータをcsv出力したいです
発生している問題・エラーメッセージ
データが出てきません
該当のソースコード
php
1<?php 2session_start(); 3session_regenerate_id(true); 4if(isset($_SESSION['login'])==false) 5{ 6 print 'ログインされていません。<br />'; 7 print '<a href="../staff_login/staff_login.html">ログイン画面へ</a>'; 8 exit(); 9} 10else 11{ 12 print $_SESSION['staff_name']; 13 print 'さんログイン中<br />'; 14 print '<br />'; 15} 16?> 17 18<!DOCTYPE html> 19<html> 20<head> 21<meta charset="UTF-8"> 22<title> ろくまる農園</title> 23</head> 24<body> 25 26<?php 27 28try 29{ 30 31$year=$_POST['year']; 32$month=$_POST['month']; 33$day=$_POST['day']; 34 35$dsn='mysql:dbname=shop;host=localhost;charset=utf8'; 36$user='root'; 37$password=''; 38$dbh=new PDO($dsn,$user,$password); 39$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 40 41$sql=' 42SELECT 43 dat_sales.code, 44 dat_sales.date, 45 dat_sales.code_member, 46 dat_sales.name AS dat_sales_name, 47 dat_sales.email, 48 dat_sales.postal1, 49 dat_sales.postal2, 50 dat_sales.address, 51 dat_sales.tel, 52 dat_sales_product.code_product, 53 mst_product.name AS mst_product_name, 54 dat_sales_product.price, 55 dat_sales_product.quantity 56FROM 57 dat_sales,dat_sales_product,mst_product 58WHERE 59 dat_sales.code=dat_sales_product.code_sales 60 AND dat_sales_product.code_product=mst_product.code 61 AND substr(dat_sales.date,1,4)=? 62 AND substr(dat_sales.date,6,2)=? 63 AND substr(dat_sales.date,9,2)=? 64'; 65 66$stmt=$dbh->prepare($sql); 67$data[]=$year; 68$data[]=$month; 69$data[]=$day; 70$stmt->execute($data); 71 72$dbh=null; 73 74$csv='注文コード,注文日時,会員番号,お名前,メール,郵便番号,住所,TEL,商品コード,商品名,価格,数量'; 75$csv.="\n"; 76while(true) 77{ 78 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 79 if($rec==false) 80 { 81 break; 82 } 83 $csv.=$rec['code']; 84 $csv.=','; 85 $csv.=$rec['date']; 86 $csv.=','; 87 $csv.=$rec['code_member']; 88 $csv.=','; 89 $csv.=$rec['dat_sales_name']; 90 $csv.=','; 91 $csv.=$rec['email']; 92 $csv.=','; 93 $csv.=$rec['postal1'].'-'.$rec['postal2']; 94 $csv.=','; 95 $csv.=$rec['address']; 96 $csv.=','; 97 $csv.=$rec['tel']; 98 $csv.=','; 99 $csv.=$rec['code_product']; 100 $csv.=','; 101 $csv.=$rec['mst_product_name']; 102 $csv.=','; 103 $csv.=$rec['price']; 104 $csv.=','; 105 $csv.=$rec['quantity']; 106 $csv.="\n"; 107} 108 109print nl2br($csv); 110 111} 112catch (Exception $e) 113{ 114 print 'ただいま障害により大変ご迷惑をお掛けしております。'; 115 exit(); 116} 117 118?> 119 120<br /> 121<a href="../staff_login/staff_top.php">トップメニューへ</a><br /> 122 123</body> 124</html>
試したこと
下記WHERE条件がおかしいと思い、実際にデータに入っている数字に変えて出力したところうまくいきました。
AND substr(dat_sales.date,1,4)=?
AND substr(dat_sales.date,6,2)=?
AND substr(dat_sales.date,9,2)=?
AND substr(dat_sales.date,1,4)="2020"
AND substr(dat_sales.date,6,2)="10"
AND substr(dat_sales.date,9,2)="27"
実際にはプルダウンで数字を選んで、その日付と一致するデータをcsvで出したいです。
知識不足のためよろしくお願いいたします。
### 追記
プルダウン
order_download.php
common.php
function pulldown_year() {
print '<select name="year">';
print '<option value="2017">2017</option>';
print '<option value="2017">2018</option>';
print '<option value="2017">2019</option>';
print '<option value="2017">2020</option>';
print '</select>';
}
function pulldown_month() {
print '<select name="month">';
print '<option value="01">01</option>';
print '<option value="02">02</option>';
print '<option value="03">03</option>';
print '<option value="04">04</option>';
print '<option value="05">05</option>';
print '<option value="06">06</option>';
print '<option value="07">07</option>';
print '<option value="08">08</option>';
print '<option value="09">09</option>';
print '<option value="10">10</option>';
print '<option value="11">11</option>';
print '<option value="12">12</option>';
print '</select>';
}
function pulldown_day() {
print '<select name="day">';
print '<option value="01">01</option>';
print '<option value="02">02</option>';
print '<option value="03">03</option>';
print '<option value="04">04</option>';
print '<option value="05">05</option>';
print '<option value="06">06</option>';
print '<option value="07">07</option>';
print '<option value="08">08</option>';
print '<option value="09">09</option>';
print '<option value="10">10</option>';
print '<option value="11">11</option>';
print '<option value="12">12</option>';
print '<option value="13">13</option>';
print '<option value="14">14</option>';
print '<option value="15">15</option>';
print '<option value="16">16</option>';
print '<option value="17">17</option>';
print '<option value="18">18</option>';
print '<option value="19">19</option>';
print '<option value="20">20</option>';
print '<option value="21">21</option>';
print '<option value="22">22</option>';
print '<option value="23">23</option>';
print '<option value="24">24</option>';
print '<option value="25">25</option>';
print '<option value="26">26</option>';
print '<option value="27">27</option>';
print '<option value="28">28</option>';
print '<option value="29">29</option>';
print '<option value="30">30</option>';
print '<option value="31">31</option>';
print '</select>';
}
データはtimestampでこのような形で入っています
2020-10-27 20:10:36
AND substr(dat_sales.date,1,4)="2020"
AND substr(dat_sales.date,6,2)="10"
AND substr(dat_sales.date,9,2)="27"
で抽出した場合にはデータが出てきます。
プルダウンで選んだ数字が入るためには
AND substr(dat_sales.date,1,4)=?
の?ところを変更すべきかと考えたのですが、どのようにすべきかがわかりません。
初心者のためお見苦しい文章で申し訳ありません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。