teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コードの追記

2019/05/10 07:21

投稿

newyee
newyee

スコア213

title CHANGED
File without changes
body CHANGED
@@ -177,4 +177,156 @@
177
177
  <p>(必須)年齢<input type="text" name="age" size="2" value="<?php if($age){echo $age;}else{echo '';}?>">歳</p>
178
178
  ```
179
179
  ここで入力保持の為、設定した$ageが表示されません。
180
- 上記問題を解決するには、どのようにすれば良いでしょうか?
180
+ 上記問題を解決するには、どのようにすれば良いでしょうか?
181
+ 追記です。
182
+ 「0」のチェックを解決したコードを作り直してみましたので、下記に追加しておきます。
183
+ 下記は、お問合せ入力画面の「inquiry_form.php」です
184
+ ```php
185
+ <?php
186
+ session_start();
187
+
188
+ $err = [];
189
+ if(!empty($_POST)){
190
+ $name = filter_input(INPUT_POST,'name');
191
+ $age = (string)filter_input(INPUT_POST,'age');
192
+ $color = filter_input(INPUT_POST,'color', FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
193
+ //全角を半角にし、空白を削除
194
+ $name = str_replace([' ',' '], '', mb_convert_kana($name, 'a', 'UTF-8'));
195
+ $age = str_replace([' ',' '], '', mb_convert_kana($age, 'a', 'UTF-8'));
196
+ var_dump($age);
197
+ if(!strlen($name) > 0){
198
+
199
+ $name_err = '必須項目です';
200
+ echo __LINE__ . PHP_EOL;
201
+ }else{
202
+ echo __LINE__ . PHP_EOL;
203
+
204
+ }
205
+
206
+ if(empty($name_err)){
207
+ $_SESSION['name'] = $name;
208
+ }
209
+
210
+ if(strlen($age) > 0){
211
+ echo __LINE__;
212
+
213
+ if(!ctype_digit($age)){
214
+ var_dump($age);
215
+
216
+ $age_err = '年齢は整数を入力してください';
217
+ var_dump($age);
218
+ echo __LINE__ . PHP_EOL;
219
+ }else{
220
+ var_dump($age);
221
+ echo __LINE__ . PHP_EOL;
222
+ }
223
+ }else{
224
+ $age_err = '必須項目です';
225
+ echo __LINE__;
226
+ }
227
+
228
+ // var_dump($name_err);
229
+ // var_dump($age_err);
230
+ // exit();
231
+ if(empty($age_err)){
232
+ $_SESSION['age'] = $age;
233
+ }
234
+
235
+ // var_dump($age);
236
+ // var_dump($age_err);
237
+ // exit();
238
+
239
+ if($color){
240
+ $color = implode('、',$color);
241
+ echo __LINE__ . PHP_EOL;
242
+ }else{
243
+ $color = array();
244
+ $color = '';
245
+ //echo __LINE__ . PHP_EOL;
246
+ }
247
+
248
+ $_SESSION['color'] = $color;
249
+
250
+ if(empty($name_err) && empty($age_err)){
251
+ header('Location:complete.php');
252
+ exit();
253
+ echo 'OK';
254
+ echo __LINE__;
255
+ }
256
+ // var_dump($name_err);
257
+ // var_dump($age_err);
258
+ // exit();
259
+
260
+
261
+ }
262
+
263
+ ?>
264
+
265
+
266
+
267
+ <!DOCTYPE html>
268
+ <html lang="ja">
269
+ <head>
270
+ <meta charset="UTF-8">
271
+ <title>お問合せ</title>
272
+ </head>
273
+ <body>
274
+ <h1 style="color:red">お問合せ画面</h1>
275
+ <p>お問合せ内容を入力してください。</p>
276
+ <form id="input_form" action="inquiry_form.php" method="post">
277
+ <p>
278
+ (必須)名前<input type="text" name="name" value="<?php echo isset($name) ? $name : ''; ?>">
279
+ <span style="color:red"><?php echo isset($name_err) ? $name_err : ''; ?></span><br>
280
+ (必須)年齢<input type="text" name="age" size="5" value="<?php echo isset($age) ? $age : '';?>">歳
281
+ <span style="color:red"><?php echo isset($age_err) ? $age_err : ''; ?></span><br>
282
+
283
+ 好きな色&emsp;<input type="checkbox" name="color[]" value="赤">赤
284
+ <input type="checkbox" name="color[]" value="緑">緑
285
+ <input type="checkbox" name="color[]" value="青">青
286
+ </p>
287
+ <input type="submit" value="送信">
288
+ </form>
289
+ <script>
290
+ document.addEventListener('DOMContentLoaded',function(){
291
+ document.getElementById('input_form').addEventListener('submit',function(e){
292
+ if(!window.confirm('ページを送信しても良いですか?')){
293
+ e.preventDefault();
294
+ }
295
+ },false)
296
+ },false);
297
+ </script>
298
+ </body>
299
+ </html>
300
+ ```
301
+ 下記は、完了画面の「complete.php」です
302
+ ```php
303
+ <?php
304
+ session_start();
305
+ ?>
306
+
307
+ <!DOCTYPE html>
308
+ <html lang="ja">
309
+ <head>
310
+ <meta charset="UTF-8">
311
+ <title> お問合せ完了</title>
312
+ </head>
313
+ <body>
314
+ <h1 style="color:red">お問合せ 完了画面</h1>
315
+ <h3>送信しました</h3>
316
+ <table border="1" >
317
+ <tr>
318
+ <td>名前</td>
319
+ <td><?php echo $_SESSION['name']; ?></td>
320
+ </tr>
321
+ <tr>
322
+ <td>年齢</td>
323
+ <td><?php echo $_SESSION['age']; ?>歳</td>
324
+ </tr>
325
+ <tr>
326
+ <td>好きな色</td>
327
+ <td><?php echo $_SESSION['color']; ?></td>
328
+ </tr>
329
+ </table>
330
+ </body>
331
+ </html>
332
+ ```