質問編集履歴

1

コードの追記

2019/05/10 07:21

投稿

newyee
newyee

スコア213

test CHANGED
File without changes
test CHANGED
@@ -357,3 +357,307 @@
357
357
  ここで入力保持の為、設定した$ageが表示されません。
358
358
 
359
359
  上記問題を解決するには、どのようにすれば良いでしょうか?
360
+
361
+ 追記です。
362
+
363
+ 「0」のチェックを解決したコードを作り直してみましたので、下記に追加しておきます。
364
+
365
+ 下記は、お問合せ入力画面の「inquiry_form.php」です
366
+
367
+ ```php
368
+
369
+ <?php
370
+
371
+ session_start();
372
+
373
+
374
+
375
+ $err = [];
376
+
377
+ if(!empty($_POST)){
378
+
379
+ $name = filter_input(INPUT_POST,'name');
380
+
381
+ $age = (string)filter_input(INPUT_POST,'age');
382
+
383
+ $color = filter_input(INPUT_POST,'color', FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
384
+
385
+ //全角を半角にし、空白を削除
386
+
387
+ $name = str_replace([' ',' '], '', mb_convert_kana($name, 'a', 'UTF-8'));
388
+
389
+ $age = str_replace([' ',' '], '', mb_convert_kana($age, 'a', 'UTF-8'));
390
+
391
+ var_dump($age);
392
+
393
+ if(!strlen($name) > 0){
394
+
395
+
396
+
397
+ $name_err = '必須項目です';
398
+
399
+ echo __LINE__ . PHP_EOL;
400
+
401
+ }else{
402
+
403
+ echo __LINE__ . PHP_EOL;
404
+
405
+
406
+
407
+ }
408
+
409
+
410
+
411
+ if(empty($name_err)){
412
+
413
+ $_SESSION['name'] = $name;
414
+
415
+ }
416
+
417
+
418
+
419
+ if(strlen($age) > 0){
420
+
421
+ echo __LINE__;
422
+
423
+
424
+
425
+ if(!ctype_digit($age)){
426
+
427
+ var_dump($age);
428
+
429
+
430
+
431
+ $age_err = '年齢は整数を入力してください';
432
+
433
+ var_dump($age);
434
+
435
+ echo __LINE__ . PHP_EOL;
436
+
437
+ }else{
438
+
439
+ var_dump($age);
440
+
441
+ echo __LINE__ . PHP_EOL;
442
+
443
+ }
444
+
445
+ }else{
446
+
447
+ $age_err = '必須項目です';
448
+
449
+ echo __LINE__;
450
+
451
+ }
452
+
453
+
454
+
455
+ // var_dump($name_err);
456
+
457
+ // var_dump($age_err);
458
+
459
+ // exit();
460
+
461
+ if(empty($age_err)){
462
+
463
+ $_SESSION['age'] = $age;
464
+
465
+ }
466
+
467
+
468
+
469
+ // var_dump($age);
470
+
471
+ // var_dump($age_err);
472
+
473
+ // exit();
474
+
475
+
476
+
477
+ if($color){
478
+
479
+ $color = implode('、',$color);
480
+
481
+ echo __LINE__ . PHP_EOL;
482
+
483
+ }else{
484
+
485
+ $color = array();
486
+
487
+ $color = '';
488
+
489
+ //echo __LINE__ . PHP_EOL;
490
+
491
+ }
492
+
493
+
494
+
495
+ $_SESSION['color'] = $color;
496
+
497
+
498
+
499
+ if(empty($name_err) && empty($age_err)){
500
+
501
+ header('Location:complete.php');
502
+
503
+ exit();
504
+
505
+ echo 'OK';
506
+
507
+ echo __LINE__;
508
+
509
+ }
510
+
511
+ // var_dump($name_err);
512
+
513
+ // var_dump($age_err);
514
+
515
+ // exit();
516
+
517
+
518
+
519
+
520
+
521
+ }
522
+
523
+
524
+
525
+ ?>
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+ <!DOCTYPE html>
534
+
535
+ <html lang="ja">
536
+
537
+ <head>
538
+
539
+ <meta charset="UTF-8">
540
+
541
+ <title>お問合せ</title>
542
+
543
+ </head>
544
+
545
+ <body>
546
+
547
+ <h1 style="color:red">お問合せ画面</h1>
548
+
549
+ <p>お問合せ内容を入力してください。</p>
550
+
551
+ <form id="input_form" action="inquiry_form.php" method="post">
552
+
553
+ <p>
554
+
555
+ (必須)名前<input type="text" name="name" value="<?php echo isset($name) ? $name : ''; ?>">
556
+
557
+ <span style="color:red"><?php echo isset($name_err) ? $name_err : ''; ?></span><br>
558
+
559
+ (必須)年齢<input type="text" name="age" size="5" value="<?php echo isset($age) ? $age : '';?>">歳
560
+
561
+ <span style="color:red"><?php echo isset($age_err) ? $age_err : ''; ?></span><br>
562
+
563
+
564
+
565
+ 好きな色&emsp;<input type="checkbox" name="color[]" value="赤">赤
566
+
567
+ <input type="checkbox" name="color[]" value="緑">緑
568
+
569
+ <input type="checkbox" name="color[]" value="青">青
570
+
571
+ </p>
572
+
573
+ <input type="submit" value="送信">
574
+
575
+ </form>
576
+
577
+ <script>
578
+
579
+ document.addEventListener('DOMContentLoaded',function(){
580
+
581
+ document.getElementById('input_form').addEventListener('submit',function(e){
582
+
583
+ if(!window.confirm('ページを送信しても良いですか?')){
584
+
585
+ e.preventDefault();
586
+
587
+ }
588
+
589
+ },false)
590
+
591
+ },false);
592
+
593
+ </script>
594
+
595
+ </body>
596
+
597
+ </html>
598
+
599
+ ```
600
+
601
+ 下記は、完了画面の「complete.php」です
602
+
603
+ ```php
604
+
605
+ <?php
606
+
607
+ session_start();
608
+
609
+ ?>
610
+
611
+
612
+
613
+ <!DOCTYPE html>
614
+
615
+ <html lang="ja">
616
+
617
+ <head>
618
+
619
+ <meta charset="UTF-8">
620
+
621
+ <title> お問合せ完了</title>
622
+
623
+ </head>
624
+
625
+ <body>
626
+
627
+ <h1 style="color:red">お問合せ 完了画面</h1>
628
+
629
+ <h3>送信しました</h3>
630
+
631
+ <table border="1" >
632
+
633
+ <tr>
634
+
635
+ <td>名前</td>
636
+
637
+ <td><?php echo $_SESSION['name']; ?></td>
638
+
639
+ </tr>
640
+
641
+ <tr>
642
+
643
+ <td>年齢</td>
644
+
645
+ <td><?php echo $_SESSION['age']; ?>歳</td>
646
+
647
+ </tr>
648
+
649
+ <tr>
650
+
651
+ <td>好きな色</td>
652
+
653
+ <td><?php echo $_SESSION['color']; ?></td>
654
+
655
+ </tr>
656
+
657
+ </table>
658
+
659
+ </body>
660
+
661
+ </html>
662
+
663
+ ```