
前提・実現したいこと
PHPでSQLを実行したいです。
複数の値を$_POSTで受け取り、複数行のレコードをデータベースに一括追加したいです。
受け取る値は1〜5つで変動するのですが、2つ以上を受け取っても1つしか登録できません。
if文で考えたのですが期待した結果を得られません。
$_POSTの値は受け取れています。
If文も長くなってしまい、、もっとでスッキリ書き替える方法もアドバイス頂けると助かります。
よろしくお願いします。
コード全体
PHP
1<?php 2//値を受け取る 3$day1 = htmlspecialchars( $_POST[ "day1" ], ENT_QUOTES, "UTF-8" ); 4$time1 = htmlspecialchars( $_POST[ "time1" ], ENT_QUOTES, "UTF-8" ); 5$day2 = htmlspecialchars( $_POST[ "day2" ], ENT_QUOTES, "UTF-8" ); 6$time2 = htmlspecialchars( $_POST[ "time2" ], ENT_QUOTES, "UTF-8" ); 7$day3 = htmlspecialchars( $_POST[ "day3" ], ENT_QUOTES, "UTF-8" ); 8$time3 = htmlspecialchars( $_POST[ "time3" ], ENT_QUOTES, "UTF-8" ); 9$day4 = htmlspecialchars( $_POST[ "day4" ], ENT_QUOTES, "UTF-8" ); 10$time4 = htmlspecialchars( $_POST[ "time4" ], ENT_QUOTES, "UTF-8" ); 11$day5 = htmlspecialchars( $_POST[ "day5" ], ENT_QUOTES, "UTF-8" ); 12$time5 = htmlspecialchars( $_POST[ "time5" ], ENT_QUOTES, "UTF-8" ); 13 14require_once( '../../core/config.php' ); 15try { 16 // PDOインスタンスを生成 17 $dbh = new PDO( DSN, DB_USER, DB_PASS ); 18} catch ( PDOException $e ) { 19 $msg = $e->getMessage(); 20} 21 22if ( empty( $day1 ) && empty( $time1 ) && empty( $day2 ) && empty( $time2 ) && empty( $day3 ) && empty( $time3 ) && empty( $day4 ) && empty( $time4 ) && empty( $day5 ) && empty( $time5 ) ) { 23$msg = '日付、時間が選択されていません。'; 24 $link = '<a href="javascript:history.back()">前に戻る</a>'; 25}elseif($day1 && empty( $time1 )){ 26$msg = '日付と時間をセットで選択してください。'; 27 $link = '<a href="javascript:history.back()">前に戻る</a>'; 28}elseif( empty( $day1 ) && $time1 ){ 29$msg = '日付と時間をセットで選択してください。'; 30 $link = '<a href="javascript:history.back()">前に戻る</a>'; 31}elseif($day2 && empty( $time2 )){ 32$msg = '日付と時間をセットで選択してください。'; 33 $link = '<a href="javascript:history.back()">前に戻る</a>'; 34}elseif( empty( $day2 ) && $time2 ){ 35$msg = '日付と時間をセットで選択してください。'; 36 $link = '<a href="javascript:history.back()">前に戻る</a>'; 37}elseif($day3 && empty( $time3 )){ 38$msg = '日付と時間をセットで選択してください。'; 39 $link = '<a href="javascript:history.back()">前に戻る</a>'; 40}elseif( empty( $day3 ) && $time3 ){ 41$msg = '日付と時間をセットで選択してください。'; 42 $link = '<a href="javascript:history.back()">前に戻る</a>'; 43}elseif($day4 && empty( $time4 )){ 44$msg = '日付と時間をセットで選択してください。'; 45 $link = '<a href="javascript:history.back()">前に戻る</a>'; 46}elseif( empty( $day4 ) && $time4 ){ 47$msg = '日付と時間をセットで選択してください。'; 48 $link = '<a href="javascript:history.back()">前に戻る</a>'; 49}elseif($day5 && empty( $time5 )){ 50$msg = '日付と時間をセットで選択してください。'; 51 $link = '<a href="javascript:history.back()">前に戻る</a>'; 52}elseif( empty( $day5 ) && $time5 ){ 53$msg = '日付と時間をセットで選択してください。'; 54 $link = '<a href="javascript:history.back()">前に戻る</a>'; 55}else{ 56$today = date( "Y-m-d H:i" ); 57 58if($day1){ 59$sql = "INSERT INTO holiday(holiday, break_time, shop_id, created) VALUES (:day, :time, :shop_id, :created)"; 60 $stmt = $dbh->prepare( $sql ); 61 $stmt->bindValue( ':day', $day1 ); 62 $variable = $day1.$time1; 63 $variableSplit = str_split($variable, 10); 64 $result = implode(' ', $variableSplit); 65 66 $stmt->bindValue( ':time', $result ); 67 $stmt->bindValue( ':shop_id', $shop_id ); 68 $stmt->bindValue( ':created', $today ); 69} 70if($day2){ 71$sql = "INSERT INTO holiday(holiday, break_time, shop_id, created) VALUES (:day, :time, :shop_id, :created)"; 72 $stmt = $dbh->prepare( $sql ); 73 $stmt->bindValue( ':day', $day2 ); 74 $variable = $day2.$time2; 75 $variableSplit = str_split($variable, 10); 76 $result = implode(' ', $variableSplit); 77 78 $stmt->bindValue( ':time', $result ); 79 $stmt->bindValue( ':shop_id', $shop_id ); 80 $stmt->bindValue( ':created', $today ); 81} 82if($day3){ 83$sql = "INSERT INTO holiday(holiday, break_time, shop_id, created) VALUES (:day, :time, :shop_id, :created)"; 84 $stmt = $dbh->prepare( $sql ); 85 $stmt->bindValue( ':day', $day3 ); 86 $variable = $day3.$time3; 87 $variableSplit = str_split($variable, 10); 88 $result = implode(' ', $variableSplit); 89 90 $stmt->bindValue( ':time', $result ); 91 $stmt->bindValue( ':shop_id', $shop_id ); 92 $stmt->bindValue( ':created', $today ); 93} 94if($day4){ 95$sql = "INSERT INTO holiday(holiday, break_time, shop_id, created) VALUES (:day, :time, :shop_id, :created)"; 96 $stmt = $dbh->prepare( $sql ); 97 $stmt->bindValue( ':day', $day4 ); 98 $variable = $day4.$time4; 99 $variableSplit = str_split($variable, 10); 100 $result = implode(' ', $variableSplit); 101 102 $stmt->bindValue( ':time', $result ); 103 $stmt->bindValue( ':shop_id', $shop_id ); 104 $stmt->bindValue( ':created', $today ); 105} 106if($day5){ 107$sql = "INSERT INTO holiday(holiday, break_time, shop_id, created) VALUES (:day, :time, :shop_id, :created)"; 108 $stmt = $dbh->prepare( $sql ); 109 $stmt->bindValue( ':day', $day5 ); 110 $variable = $day5.$time5; 111 $variableSplit = str_split($variable, 10); 112 $result = implode(' ', $variableSplit); 113 114 $stmt->bindValue( ':time', $result ); 115 $stmt->bindValue( ':shop_id', $shop_id ); 116 $stmt->bindValue( ':created', $today ); 117} 118 $stmt->execute(); 119 $msg = '登録が完了しました'; 120 $link = '<p><a href="ownerList.php">予約管理</a></p>'; 121 122} 123?> 124<div class="form-wrapper"> 125<h2><?php echo $msg; ?></h2> 126<!--メッセージの出力--> 127<div class="form-footer"> <?php echo $link; ?> </div> 128<!--コンテンツ終了--> 129</div> 130

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/25 09:04
2022/02/25 11:25 編集