前提・実現したいこと
PHPで、お問合せフォームを作っています。
任意で入力をお願いしている『お客様の属性』の項目について、
未入力となるとウォーミングが出てしまいます。
本項目はラジオボタンにて回答を求めています。
解消したいので、アドバイスいただけましたら幸いです。
ファイル構成は、index.html,form.php,user.csvと
tmplのフォルダ。その中に、comf.tmpl,error.tmpl,send.tmpl
があります。
csvファイルに顧客データを記録するためのシステム構築を考えております。
発生している問題・エラーメッセージ
Warning: Undefined array key "attribute" in C:\xampp\htdocs\php3\test210531\questions\form.php on line 16
該当のソースコード
php
index.php
<?php # 送信先アドレス $mailto = "---@---ya.co.jp"; # 送信後画面からの戻り先 $toppage = "./index.html"; #=========================================================== # 入力情報の受け取りと加工 #=========================================================== $name = $_POST["name"]; $email = $_POST["email"]; $tel = $_POST["tel"]; $zipcode = $_POST["zipcode"]; $address = $_POST["address"]; $attribute = $_POST["attribute"]; $comment = $_POST["comment"]; # 無効化 $name = htmlentities($name,ENT_QUOTES, "UTF-8"); $email = htmlentities($email,ENT_QUOTES, "UTF-8"); $tel = htmlentities($tel,ENT_QUOTES, "UTF-8"); $zipcode = htmlentities($zipcode,ENT_QUOTES, "UTF-8"); $address = htmlentities($address,ENT_QUOTES, "UTF-8"); $comment = htmlentities($comment,ENT_QUOTES, "UTF-8"); # 改行処理 $name = str_replace("\r\n", "", $name); $email = str_replace("\r\n", "", $email); $tel = str_replace("\r\n", "", $tel); $zipcode = str_replace("\r\n", "", $zipcode); $address = str_replace("\r\n", "", $address); $comment = str_replace("\r\n", "\t", $comment); $comment = str_replace("\r", "\t", $comment); $comment = str_replace("\n", "\t", $comment); # 入力チェック if ($name == "") { error("名前が未入力です"); } if (!preg_match("/\w+@\w+/",$email)){ error("メールアドレスが不正です"); } if ($comment == "") { error("コメントが未入力です"); } # 分岐チェック if ($_POST["mode"] == "post") { conf_form(); } else if($_POST["mode"] == "send") { send_form(); } #----------------------------------------------------------- # 確認画面 #----------------------------------------------------------- function conf_form(){ global $name; global $email; global $tel; global $zipcode; global $address; global $attribute; global $comment; # テンプレート読み込み $conf = fopen("tmpl/conf.tmpl","r") or die; $size = filesize("tmpl/conf.tmpl"); $data = fread($conf , $size); fclose($conf); # 文字置き換え $data = str_replace("!name!", $name, $data); $data = str_replace("!email!", $email, $data); $data = str_replace("!tel!", $tel, $data); $data = str_replace("!zipcode!", $zipcode, $data); $data = str_replace("!address!", $address, $data); $data = str_replace("!attribute!", $attribute, $data); $data = str_replace("!comment!", $comment, $data); # 表示 echo $data; exit; } #----------------------------------------------------------- # エラー画面 #----------------------------------------------------------- function error($msg){ $error = fopen("tmpl/error.tmpl","r"); $size = filesize("tmpl/error.tmpl"); $data = fread($error , $size); fclose($error); #文字置き換え $data = str_replace("!message!", $msg, $data); #表示 echo $data; exit; } #----------------------------------------------------------- # CSV書込 #----------------------------------------------------------- function send_form(){ global $name; global $email; global $tel; global $zipcode; global $address; global $attribute; global $comment; $user_input = array($name,$email,$tel,$zipcode,$address,$attribute,$comment); mb_convert_variables("SJIS","UTF-8",$user_input); $fh = fopen("user.csv","a"); flock($fh,LOCK_EX); fputcsv($fh, $user_input); flock($fh,LOCK_UN); fclose($fh); # テンプレート読み込み $conf = fopen("tmpl/send.tmpl","r") or die; $size = filesize("tmpl/send.tmpl"); $data = fread($conf , $size); fclose($conf); #文字置き換え global $toppage; $data = str_replace("!top!", $toppage, $data); #表示 echo $data; exit; } **●お客様フォームHTML** index.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>お問い合わせ ツ</title> <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> <style> body{ width: 1000px; margin-left: auto; margin-right: auto; font-family: "游ゴシック Medium", "Yu Gothic Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; } </style> </head> <body> <div id="headerLogo"> <a href="../index.html"><div id="kjsLogo"><img src="../images/kjslogo.png" alt="スポーツロゴ" width="80px" /></div></a> <div id="kjsNameLogo"> <a href="../index.html"><p><img src="../images/kjs-name-eigo.png" width="300px" /></p> <p><img src="../images/kjs-name-katakana.png" width="300px" height="22px" /></div></a> </p> </div> <div> <nav id="annai-left"> <h1>お問い合わせ</h1> <p> のホームページにアクセスありがとうございます。<br>お問い合わせいただきました件につきましては、原則メールにて回答申し上げます。<br>尚、お電話での回答をご希望の方は、電話番号のご入力をお願いいたします。</p> <p>よろしくお願いいたします。</p> </nav> <nav id="annai-right"> <p>電話でのお問い合わせ</p> <p id="phone"></p> <p>FAXでのお問い合わせ</p> <p id="fax"></p> <p>受付時間 平日9時~17時30分</p> </nav> </div> <form action="form.php" method="post"> <table id="otoiawaseform" cellspacing="0" cellpadding="20" > <tr> <th>お名前 <span class="hissu">(必須)</span></th> <td><input type="text" name="name" placeholder="(例)山田太郎" size="40" required></td> </tr> <tr> <th>メールアドレス <span class="hissu">(必須)</span></th> <td> <input type="email" name="email" placeholder="(例)ooo@×××" size="40" required></td> </tr> <tr> <th>電話番号 <span class="hissu">(ご希望の方)</span></th> <td><input type="tel" name="tel" placeholder="(例)09011112222 ハイフンなし" size="25" ></td> </tr> <tr> <th>郵便番号</th> <td><input type="text" name="zipcode" placeholder="(例)1500031 ハイフンなし" size="20" pattern="\d{7}" ></td> </tr> <tr> <th>住所</th> <td><input type="text" name="address" placeholder="都道府県、市区町村、番地、建物名" size="50" ></td> </tr> <tr> <th>お客様の属性</th> <td> <input type="radio" name="attribute" value="卸業関係">卸業関係の方 <input type="radio" name="attribute" value="法人">法人の方 <input type="radio" name="attribute" value="個人">個人の方 </td> </tr> <tr> <th>お問い合わせ内容 <span class="hissu">(必須)</span></th> <td> <textarea name="comment" cols="70" rows="10"></textarea> </td> </tr> </table> <input type="submit" name="submit" value="送信します" class="sousinbtn"> <input type="hidden" name="mode" value="post"> </form> <a href="../index.html #sec0" ><p id="return-top">メインページに戻る</p></a> </body> </html> **●確認画面 TMPL** tmpl/comf.tmpl <!doctypr html> <html> <head> <meta charset="utf-8"> <style type="text/css"> body{ width: 500px; margin-left: auto; margin-right: auto; margin-top: 100px; padding:20px; font-family: "游ゴシック Medium", "Yu Gothic Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; background-color: #f7f3ee; border: 1px solid black; } .button{ margin-left: 60px; } <!-- span { color:blue; } --> </style> <title>確認フォーム</title> </head> <body> <h3>次の内容でよろしければ、送信ボタンを押してください。</h3> <p> ■お名前 : <span>!name!</span> </p> <p> ■メールアドレス : <span>!email!</span> </p> <p> ■電話番号 : <span>!tel!</span> </p> <p> ■郵便番号 : <span>!zipcode!</span> </p> <p> ■住所: <span>!address!</span> </p> <p> ■お客様の属性 : <span>!attribute!</span> </p> <p> ■コメント : <span>!comment!</span> </p> <form action="form.php" method="post"> <input type="hidden" name="mode" value="send"> <input type="hidden" name="name" value="!name!"> <input type="hidden" name="email" value="!email!"> <input type="hidden" name="tel" value="!tel!"> <input type="hidden" name="zipcode" value="!zipcode!"> <input type="hidden" name="address" value="!address!"> <input type="hidden" name="attribute" value="!attribute!"> <input type="hidden" name="comment" value="!comment!"> <input type="button" value="前に戻る" onclick="history.back()" class=button> <input type="submit" value="送信する" class=button> </form> </body> </html> **●エラー画面 TMPL** tmpl/error.tmpl <!doctype html> <html> <head> <meta charset="utf-8"> <style type="text/css"> p.msg{ color:red; } </style> <title>エラー</title> </head> <body> <p><b>エラーが発生しました。</b></p> <p class="msg">!message!</p> <form> <input type="button" value="前画面に戻る" onclick="history.back()"> </form> </body> </html> **● 送信画面 TMPL** tmpl/send.tmpl <!doctype html> <html> <head> <meta charset="utf-8"> <title>送信完了</title> <style> body{ width: 1000px; margin-left: auto; margin-right: auto; margin-top: 200px; text-align: center; background-color: #f7f3ee } </style> </head> <body> <h3>ありがとうございました。</h3> <p>こちらからの回答までしばらくお待ちください。</p> <form> <input type="button" value="トップへ戻る" onclick="location.href='!top!';"> </form> </body> </html> ``` ### 試したこと 初心者のため、何もできずにおります。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/03 03:23
2021/06/03 03:27