回答編集履歴

2

修正

2019/05/02 13:20

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -24,6 +24,12 @@
24
24
 
25
25
  (既にアドバイスした内容ですが)
26
26
 
27
+
28
+
29
+ ---
30
+
31
+
32
+
27
33
  ```php
28
34
 
29
35
 
@@ -48,7 +54,9 @@
48
54
 
49
55
 
50
56
 
51
-
57
+ ---
58
+
59
+
52
60
 
53
61
  ```php
54
62
 
@@ -108,6 +116,10 @@
108
116
 
109
117
 
110
118
 
119
+ ---
120
+
121
+
122
+
111
123
  ```php
112
124
 
113
125
  public function post() {

1

修正

2019/05/02 13:20

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -13,3 +13,235 @@
13
13
  - データがとれてること確認できてるならそのデータをreturnして呼び先で受け取って出力処理書けばいいだけでは
14
14
 
15
15
  - _validateSelect()とか_validateToken()でException投げてるのはいいけど受け取ってもリダイレクトしているだけなので意味ないのでは。それならException投げるのではなくてエラー受け取って画面にエラーメッセージ出力したほうがいいと思う(そこは決めてください。エラー捕捉しているのに使ってないことが問題なので)
16
+
17
+
18
+
19
+ -----------
20
+
21
+
22
+
23
+ ポイントだけ調整コード
24
+
25
+ (既にアドバイスした内容ですが)
26
+
27
+ ```php
28
+
29
+
30
+
31
+ class Price {
32
+
33
+ private $_db;
34
+
35
+ ```
36
+
37
+
38
+
39
+ ```php
40
+
41
+ class Price {
42
+
43
+ private $_db;
44
+
45
+ public $_result = [];
46
+
47
+ ```
48
+
49
+
50
+
51
+
52
+
53
+ ```php
54
+
55
+ public function _searchDate() {
56
+
57
+
58
+
59
+ $date = filter_input(INPUT_POST,'date',FILTER_SANITIZE_NUMBER_INT);
60
+
61
+ $res = $this->_db->prepare('select カラム名 from テーブル名 where カラム名 = :date');
62
+
63
+ $res->bindValue(':date', $date, \PDO::PARAM_STR);
64
+
65
+ $res->execute();
66
+
67
+ ```
68
+
69
+
70
+
71
+ ※「メソッドはどこからどう呼び出されるか知らない」のが実際の前提なので「前のメソッドでチェックしている前提」は捨ててきちんと丁寧に書くこと。PDOException も同理由。
72
+
73
+ ```php
74
+
75
+ public function _searchDate() {
76
+
77
+ try {
78
+
79
+ $date = filter_input(INPUT_POST,'date',FILTER_SANITIZE_NUMBER_INT);
80
+
81
+ $where = '';
82
+
83
+ if(!is_null($date)){
84
+
85
+ $where = ' where カラム名 = :date';
86
+
87
+ }
88
+
89
+ $stmt = $this->_db->prepare('select カラム名 from テーブル名'.$where );
90
+
91
+ if(!is_null($date)){
92
+
93
+ $stmt->bindValue(':date', $date, \PDO::PARAM_STR);
94
+
95
+ }
96
+
97
+ $stmt->execute();
98
+
99
+ $this->_result = $stmt->fetchAll();
100
+
101
+ } catch (\PDOException $e){
102
+
103
+ die(var_dump($e));
104
+
105
+ }
106
+
107
+ ```
108
+
109
+
110
+
111
+ ```php
112
+
113
+ public function post() {
114
+
115
+ try {
116
+
117
+
118
+
119
+ $this->_validateSelect();
120
+
121
+ $this->_validateToken();
122
+
123
+ $this->_searchDate();
124
+
125
+
126
+
127
+ } catch (\Exception $e) {
128
+
129
+ header('Location: http://' . $_SERVER['HTTP_HOST']);
130
+
131
+ }
132
+
133
+ exit;
134
+
135
+ }
136
+
137
+ ```
138
+
139
+
140
+
141
+ exit入れるならheaderの直後であるべき、だけど、元の記述だとせっかく捕捉したExceptionを握りつぶしているので、練習とか学習とか開発途中のものだったらExceptionを全てvar_dump()などで出力しておくべき。
142
+
143
+ ```php
144
+
145
+ public function post() {
146
+
147
+ try {
148
+
149
+
150
+
151
+ $this->_validateSelect();
152
+
153
+ $this->_validateToken();
154
+
155
+ $this->_searchDate();
156
+
157
+
158
+
159
+ } catch (\Exception $e) {
160
+
161
+ die(var_dump($e));
162
+
163
+ }
164
+
165
+ }
166
+
167
+ ```
168
+
169
+
170
+
171
+ index.php
172
+
173
+ ```php
174
+
175
+ <?php
176
+
177
+ require_once(__DIR__ . '/config.php');
178
+
179
+ require_once(__DIR__ . '/search.php');
180
+
181
+
182
+
183
+ $search = new \SearchDate\Price();
184
+
185
+ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
186
+
187
+ $search->post();
188
+
189
+ }
190
+
191
+ ?>
192
+
193
+ <!DOCTYPE html>
194
+
195
+ <html lang="ja">
196
+
197
+ <head>
198
+
199
+ <meta charset="utf-8">
200
+
201
+ <title>練習サイト</title>
202
+
203
+ <link rel="stylesheet" href="styles.css">
204
+
205
+ </head>
206
+
207
+ <body>
208
+
209
+
210
+
211
+ <form action="" method="post">
212
+
213
+ <label> 日付: <input type="date" name="date"></label>
214
+
215
+ <input type="submit" value="検索">
216
+
217
+
218
+
219
+ <div>サンプル1</div>
220
+
221
+ <div>サンプル2</div>
222
+
223
+ <div>
224
+
225
+ <?php
226
+
227
+ foreach($search->_result as $rownum=>$rowdata){
228
+
229
+ echo $rowdata["カラム名"];
230
+
231
+ }
232
+
233
+ ?>
234
+
235
+ </div>
236
+
237
+
238
+
239
+ </form>
240
+
241
+
242
+
243
+ </body>
244
+
245
+ </html>
246
+
247
+ ```