前提・実現したいこと
問い合わせフォームを作っていて、入力されていなかったりすると警告が出るようになっていますが、
セレクトボックスで何も選択されていない場合、警告を出したい。
発生している問題・エラーメッセージ
選択をしても「お問い合わせ項目を選択してください。」とでて次にすすめなくなってしまう。
<html> <head> <body> <?php session_start(); $mode = 'input'; $errmessage = array(); if( isset($_POST['back']) && $_POST['back'] ){ // 何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ // 確認画面 if( !$_POST['fullname'] ) { $errmessage[] = "名前を入力してください"; } else if( mb_strlen($_POST['fullname']) > 100 ){ $errmessage[] = "名前は100文字以内にしてください"; } $_SESSION['fullname'] = htmlspecialchars($_POST['fullname'], ENT_QUOTES); if( !$_POST['email'] ) { $errmessage[] = "Eメールを入力してください。"; } else if( mb_strlen($_POST['email']) > 200 ){ $errmessage[] = "Eメールは200文字以内にしてください。"; } else if( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ){ $errmessage[] = "メールアドレスが不正です。"; } $_SESSION['email'] = htmlspecialchars($_POST['email'], ENT_QUOTES); if( !$_POST['tel'] ) { $errmessage[] = "電話番号を入力してください。"; } else if( mb_strlen($_POST['tel']) > 12 ){ $errmessage[] = "電話番号は12桁以内にしてください。。"; } if(isset($_POST['cs'])) { $errmessage[] = "お問い合わせ項目を選択してください。"; echo 'お問い合わせ項目:' . $cs; } else { $errmessage[] = "お問い合わせ項目が選択されていません。"; } $_SESSION['cs'] = htmlspecialchars($_POST['cs'], ENT_QUOTES); if( !$_POST['message'] ){ $errmessage[] = "お問い合わせ内容を入力してください。"; } else if( mb_strlen($_POST['message']) > 1000 ){ $errmessage[] = "お問い合わせ内容は1000文字以内にしてください"; } $_SESSION['message'] = htmlspecialchars($_POST['message'], ENT_QUOTES); if( $errmessage ){ $mode = 'input'; } else { $mode = 'confirm'; } } else if( isset($_POST['send']) && $_POST['send'] ){ // 送信ボタンを押したとき $message = "お問い合わせを受け付けました。 \r\n" . "名前: " . $_SESSION['fullname'] . "\r\n" . "email: " . $_SESSION['email'] . "\r\n" . "tel: " . $_SESSION['tel'] . "\r\n" . "お問い合わせ項目: " . $_SESSION['cs'] . "\r\n" . "お問い合わせ内容:\r\n" . preg_replace("/\r\n|\r|\n/", "\r\n", $_SESSION['message']); mail($_SESSION['email'],'お問い合わせありがとうございます。',$message); mail('aaaaa@gmail.com','お問い合わせありがとうございます。',$message); $_SESSION = array(); $mode = 'send'; } else { $_SESSION['fullname'] = ""; $_SESSION['email'] = ""; $_SESSION['tel'] = ""; $_SESSION['cs'] = ""; $_SESSION['message'] = ""; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問い合わせフォーム</title> </head> <body> <?php if( $mode == 'input' ){ ?> <!-- 入力画面 --> <?php if( $errmessage ){ echo '<div style="color:red;">'; echo implode('<br>', $errmessage ); echo '</div>'; } ?> <form action="./page-contact.php" method="post"> 名前 <input type="text" name="fullname" value="<?php echo $_SESSION['fullname'] ?>"> Eメール <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"> 電話番号 <input type="tel" name="tel" value="<?php echo $_SESSION['tel'] ?>"> お問い合わせ項目<select name= "cs"> <option hidden>選択してください</option> <option value = "映画">映画</option> <option value = "アニメ">アニメ</option> <option value = "音楽">音楽</option> <option value = "絵画">絵画</option> <option value = "その他">その他</option> </select> お問い合わせ内容 <textarea cols="40" rows="8" name="message"><?php echo $_SESSION['message'] ?></textarea> <input type="submit" name="confirm" value="確認" /> </form> <?php } else if( $mode == 'confirm' ){ ?> <!-- 確認画面 --> <form action="./page-contact.php" method="post"> 名前<?php echo $_SESSION['fullname'] ?> Eメール <?php echo $_SESSION['email'] ?> 電話番号 <?php echo $_SESSION['tel'] ?> お問い合わせ項目 <?php echo $_SESSION['cs'] ?> お問い合わせ内容 <?php echo nl2br($_SESSION['message']) ?> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> </form> <?php } else { ?> <!-- 完了画面 --> 送信しました。お問い合わせありがとうございました。<br> <?php } ?> </body> </html> ### 試したこと ここに問題に対して試したことを記載してください。 ```ここに言語を入力 if(isset($_POST['cs'])) { $errmessage[] = "お問い合わせ項目を選択してください。"; echo 'お問い合わせ項目:' . $cs; } else { $errmessage[] = "お問い合わせ項目が選択されていません。"; }
この部分を削除してみましたが、警告メッセージがでないままでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/11/14 12:07
2021/11/14 12:19