発生している問題・エラーメッセージ
メールフォームのバリデーションで、
URl
ファイル添付
の2つの項目で、
どちらか1つのデータが受け取れれば進む挙動にしたいのですが
今は
「両方無し」→エラー
「両方あり」→OK
「URLのみ」→OK
「ファイル添付のみ」→両方なしの時のエラーがでる
という挙動になります。
「ファイル添付のみ」もOKとなるような挙動にしたいです。
下記のサイトにあるコードを参考にしています。
https://gray-code.com/php/make-the-form-vol8/
アドバイスのほどよろしくお願いします。
足りない情報や補足すべき点があればコメントください。
該当のソースコード
php
1<?php 2 3 $page_flag = 0; 4 $clean = array(); 5 $error = array(); 6 7 function validation($data) { 8 $error = array(); 9 10 //該当部分のバリデーション 11 if( empty($data['resumeUrl']) && empty($data['attachment_file']) ) { 12 $error[] = "・「URL」か「ファイルの添付」のどちらかは必ず入力してください。"; 13 } elseif( !empty($data['resumeUrl']) || !empty($data['attachment_file'])) { 14 //次ページへ進む 15 $page_flag === 1; 16 } 17 18 return $error; 19} 20?> 21 22<!DOCTYPE> 23<html lang="ja"> 24<head> 25<meta charset="UTF-8"> 26 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 27 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 28 <title>フォーム</title> 29</head> 30<body> 31 32<!--入力内容確認ページ--> 33<?php if( $page_flag === 1 ): ?> 34 35<div class="form"> 36 <div class="title"> 37 <h2>採用面談<br/>お申し込みフォーム</h2> 38 <p class="attention">入力内容確認</p> 39 </div> 40 41 <div class="mui-container"> 42 <form class="mui-form" method="post" action=""> 43 <div class="mui-textfield"> 44 <label>お名前</label> 45 <p><?php echo $clean['your_name']; ?></p> 46 </div> 47 <div class="mui-textfield"> 48 <label>電話番号</label> 49 <p><?php echo $clean['tel']; ?></p> 50 </div> 51 <div class="mui-textfield"> 52 <label>メールアドレス</label> 53 <p><?php echo $clean['email']; ?></p> 54 </div> 55 <p class="rireki">履歴書(下記のいずれか)</p> 56 <div class="mui-urlfield"> 57 <label>URL</label> 58 <p><?php echo $clean['resumeUrl']; ?></p> 59 </div> 60 <?php if( !empty($clean['attachment_file']) ): ?> 61 <div class="mui-filefield"> 62 <label>添付ファイル</label> 63 <p><img src="<?php echo FILE_DIR.$clean['attachment_file']; ?>"></p> 64 </div> 65 <?php endif; ?> 66 <input class="mui-btn mui-btn--flat mui-btn--primary" type="submit" name="btn_back" value="修正"> 67 <input class="mui-btn mui-btn--flat mui-btn--primary" type="submit" name="btn_submit" value="送信"> 68 <input type="hidden" name="your_name" value="<?php echo $clean['your_name']; ?>"> 69 <input type="hidden" name="tel" value="<?php echo $clean['tel']; ?>"> 70 <input type="hidden" name="email" value="<?php echo $clean['email']; ?>"> 71 <input type="hidden" name="resumeUrl" value="<?php echo $clean['resumeUrl']; ?>"> 72 <?php if( !empty($clean['attachment_file']) ): ?> 73 <input type="hidden" name="attachment_file" value="<?php echo $clean['attachment_file']; ?>"> 74 <?php endif; ?> 75 </form> 76 </div> 77</div> 78 79<?php else: ?> 80 81<!--フォーム送信完了画面--> 82<?php elseif( $page_flag === 2 ): ?> 83 84<div class="content"> 85 <h2>送信が完了しました。</h2> 86</div> 87 88<?php else: ?> 89 90 91<!--フォーム入力画面--> 92<div class="form"> 93 <div class="title"> 94 <h2>採用面談<br/>お申し込みフォーム</h2> 95 <p class="attention"><span class="needed">*</span> は必須項目です。</p> 96 </div> 97 <div class="mui-container"> 98 99 <form class="mui-form" name="entryForm" action="" method="post" enctype="multipart/form-data"> 100 101 <!--エラーメッセージ表示--> 102 <?php if( !empty($error) ): ?> 103 <ul class="error_list"> 104 <?php foreach( $error as $value ): ?> 105 <li><?php echo $value; ?></li> 106 <?php endforeach; ?> 107 </ul> 108 <?php endif; ?> 109 110 111 <div class="mui-textfield"> 112 <label>お名前 <span class="needed">*</span></label> 113 <input type="text" name="your_name" required value="<?php if( !empty($clean['your_name']) ){ echo $clean['your_name']; } ?>"/> 114 </div> 115 <div class="mui-textfield"> 116 <label>電話番号</label> 117 <input type="tel" name="tel" pattern="\d{2,4}-?\d{2,4}-?\d{3,4}" title="市外局番から記入してください。"/> 118 </div> 119 <div class="mui-textfield"> 120 <label>メールアドレス <span class="needed">*</span></label> 121 <input type="email" name="email" required value="<?php if( !empty($clean['email']) ){ echo $clean['email']; } ?>"/> 122 </div> 123 <p class="rireki">履歴書(下記のいずれか) <span class="needed">*</span></p> 124 <div class="mui-urlfield"> 125 <label>URL</label> 126 <input type="url" name="resumeUrl" value="<?php if( !empty($clean['resumeUrl']) ){ echo $clean['resumeUrl']; } ?>"/> 127 </div> 128 <div class="mui-filefield"> 129 <label>アップロード(8MBまで)</label> 130 <input type="hidden" name="MAX_FILE_SIZE" value="8388608"> 131 <input type="file" name="attachment_file" value="<?php if( !empty($clean['attachment_file']) ){ echo $clean['attachment_file']; } ?>"/> 132 </div> 133 <div class="button-box_form"> 134 <input class="mui-btn mui-btn--flat mui-btn--primary" type="submit" name="btn_confirm" value="確認"> 135 </div> 136 </form> 137 </div> 138</div> 139 140<?php endif; ?> 141</body> 142</htm>
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。