前提・実現したいこと
shop_form.htmlからformで値を指定して、shop_form_check.phpで表示させたいです。
formの性別(name="danjo")、生まれ年(name="birth")の項目でエラーが起こっているのですが、原因が分かりません。
エラーメッセージ
Notice: Array to string conversion in C:\xampp\htdocs\shoping\shop\shop_form_check.php on line 118 Notice: Array to string conversion in C:\xampp\htdocs\shoping\shop\shop_form_check.php on line 119
該当のソースコード
shop_form.html
html
1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>ろくまる農園</title> 6</head> 7<body> 8 9 <p>お客様情報を入力してください。</p> 10 <form method="post" action="shop_form_check.php"> 11 <p>お名前</p> 12 <input type="text" name="onamae" style="width:200px"><br /> 13 <p></p>メールアドレス</p> 14 <input type="text" name="email" style="width:200px"><br /> 15 <p></p>郵便番号</p> 16 <input type="text" name="postal1" style="width:50px">- 17 <input type="text" name="postal2" style="width:80px"><br /> 18 <p>住所</p> 19 <input type="text" name="address" style="width:500px"><br /> 20 <p>電話番号</p> 21 <input type="text" name="tel" style="width:150px"><br /> 22 23 <input type="radio" name="chumon" value="chumonkonkai" checked>今回だけの注文<br> 24 <input type="radio" name="chumon" value="touroku">会員登録しての注文<br> 25 <p>会員登録する方は以下の項目も入力してください</p> 26 <p>パスワードを入力してください</p> 27 <input type="password" name="pass"> 28 <p>もう一度パスワードを入力してください</p> 29 <input type="password" name="pass2"> 30 <p>性別</p> 31 <input type="radio" name="danjo" value="dan" checked>男性<br> 32 <input type="radio" name="danjo" value="jo">女性<br> 33 34 <p>生まれ年</p> 35 <select name="birth"> 36 <option value="1910">1910年代</option> 37 <option value="1920">1920年代</option> 38 <option value="1930">1930年代</option> 39 <option value="1940">1940年代</option> 40 <option value="1950">1950年代</option> 41 <option value="1960">1960年代</option> 42 <option value="1970">1970年代</option> 43 <option value="1980">1980年代</option> 44 <option value="1919">1990年代</option> 45 <option value="2000" selected>2000年代</option> 46 <option value="2010">2010年代</option> 47 </select> 48 49 <input type="button" onclick="history.back()" value="戻る"> 50 <input type="submit" value="OK"><br /> 51 </form> 52 53</body> 54</html>
shop_form_check.php
php
1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>ろくまる農園</title> 6</head> 7<body> 8 9<?php 10 11require_once('../common/common.php'); 12 13$post=sanitize($_POST); 14 15$onamae=$post['onamae']; 16$email=$post['email']; 17$postal1=$post['postal1']; 18$postal2=$post['postal2']; 19$address=$post['address']; 20$tel=$post['tel']; 21$chumon = $post['chumon']; 22$pass = $post['pass']; 23$pass2 = ['pass2']; 24$danjo = ['danjo']; 25$birth = ['birth']; 26 27 28$okflg=true; 29 30if($onamae=='') { 31 echo 'お名前が入力されていません。<br /><br />'; 32 $okflg=false; 33} else { 34 echo 'お名前<br />'; 35 echo $onamae; 36 echo '<br /><br />'; 37} 38 39if(preg_match('/^[\w\-.]+\@[\w\-.]+.([a-z]+)$/',$email)==0) { 40 echo 'メールアドレスを正確に入力してください。<br /><br />'; 41 $okflg=false; 42} else { 43 echo 'メールアドレス<br />'; 44 echo $email; 45 echo '<br /><br />'; 46} 47 48if(preg_match('/^[0-9]+$/',$postal1)==0) { 49 echo '郵便番号は半角数字で入力してください。<br /><br />'; 50 $okflg=false; 51} else { 52 echo '郵便番号<br />'; 53 echo $postal1; 54 echo '-'; 55 echo $postal2; 56 echo '<br /><br />'; 57} 58 59if(preg_match('/^[0-9]+$/',$postal2)==0) { 60 echo '郵便番号は半角数字で入力してください。<br /><br />'; 61 $okflg=false; 62} 63 64if($address=='') { 65 echo '住所が入力されていません。<br /><br />'; 66 $okflg=false; 67} else { 68 echo '住所<br />'; 69 echo $address; 70 echo '<br /><br />'; 71} 72 73if(preg_match('/^\d{2,5}-?\d{2,5}-?\d{4,5}$/',$tel)==0) { 74 echo '電話番号を正確に入力してください。<br /><br />'; 75 $okflg=false; 76} else { 77 echo '電話番号<br />'; 78 echo $tel; 79 echo '<br /><br />'; 80} 81 82if($chumon == 'chumontouroku') { 83 if ($pass == '') { 84 echo 'パスワードが入力されていません'; 85 $okflg = false; 86 } 87 88 if ($pass != $pass2) { 89 echo 'パスワードが一致しません'; 90 $okflg = false; 91 } 92 93 echo '性別'.'<br>'; 94 if($danjo == 'dan') { 95 echo '男性'; 96 } else { 97 echo '女性'; 98 } 99 echo '<br /><br />'; 100 101 102 echo '<p>生まれ年</p>'; 103 echo $birth.'年代'; 104 echo '<br>'; 105} 106 107if($okflg==true) 108{ 109 echo '<form method="post" action="shop_form_done.php">'; 110 echo '<input type="hidden" name="onamae" value="'.$onamae.'">'; 111 echo '<input type="hidden" name="email" value="'.$email.'">'; 112 echo '<input type="hidden" name="postal1" value="'.$postal1.'">'; 113 echo '<input type="hidden" name="postal2" value="'.$postal2.'">'; 114 echo '<input type="hidden" name="address" value="'.$address.'">'; 115 echo '<input type="hidden" name="tel" value="'.$tel.'">'; 116 echo '<input type="hidden" name="chumon" value="'.$chumon.'">'; 117 echo '<input type="hidden" name="pass" value="'.$pass.'">'; 118 echo '<input type="hidden" name="danjo" value="'.$danjo.'">'; 119 echo '<input type="hidden" name="birth" value="'.$birth.'">'; 120 echo '<input type="button" onclick="history.back()" value="戻る">'; 121 echo '<input type="submit" value="OK"><br />'; 122 echo '</form>'; 123} else { 124 echo '<form>'; 125 echo '<input type="button" onclick="history.back()" value="戻る">'; 126 echo '</form>'; 127} 128 129?> 130 131</body> 132</html>
common.php
php
1<?php 2 3function gengo($seireki){ 4 if(1868<=$seireki && $seireki<=1911) { 5 $gengo='明治'; 6 } 7 8 if(1912<=$seireki && $seireki<=1925) { 9 $gengo='大正'; 10 } 11 12 if(1926<=$seireki && $seireki<=1988) { 13 $gengo='昭和'; 14 } 15 16 if(1989<=$seireki) { 17 $gengo='平成'; 18 } 19 20 return($gengo); 21} 22 23function sanitize($before) { 24 foreach($before as $key=>$value) { 25 $after[$key]=htmlspecialchars($value); 26 } 27 return $after; 28} 29 30function pulldown_year() { 31 echo '<select name="year">'; 32 echo '<option value="2013">2013</option>'; 33 echo '<option value="2014">2014</option>'; 34 echo '<option value="2015">2015</option>'; 35 echo '<option value="2016">2016</option>'; 36 echo '</select>'; 37} 38 39function pulldown_month() { 40 echo '<select name="month">'; 41 echo '<option value="01">01</option>'; 42 echo '<option value="02">02</option>'; 43 echo '<option value="03">03</option>'; 44 echo '<option value="04">04</option>'; 45 echo '<option value="05">05</option>'; 46 echo '<option value="06">06</option>'; 47 echo '<option value="07">07</option>'; 48 echo '<option value="08">08</option>'; 49 echo '<option value="09">09</option>'; 50 echo '<option value="10">10</option>'; 51 echo '<option value="11">11</option>'; 52 echo '<option value="12">12</option>'; 53 echo '</select>'; 54} 55 56function pulldown_day() { 57 echo '<select name="day">'; 58 echo '<option value="01">01</option>'; 59 echo '<option value="02">02</option>'; 60 echo '<option value="03">03</option>'; 61 echo '<option value="04">04</option>'; 62 echo '<option value="05">05</option>'; 63 echo '<option value="06">06</option>'; 64 echo '<option value="07">07</option>'; 65 echo '<option value="08">08</option>'; 66 echo '<option value="09">09</option>'; 67 echo '<option value="10">10</option>'; 68 echo '<option value="11">11</option>'; 69 echo '<option value="12">12</option>'; 70 echo '<option value="13">13</option>'; 71 echo '<option value="14">14</option>'; 72 echo '<option value="15">15</option>'; 73 echo '<option value="16">16</option>'; 74 echo '<option value="17">17</option>'; 75 echo '<option value="18">18</option>'; 76 echo '<option value="19">19</option>'; 77 echo '<option value="20">20</option>'; 78 echo '<option value="21">21</option>'; 79 echo '<option value="22">22</option>'; 80 echo '<option value="23">23</option>'; 81 echo '<option value="24">24</option>'; 82 echo '<option value="25">25</option>'; 83 echo '<option value="26">26</option>'; 84 echo '<option value="27">27</option>'; 85 echo '<option value="28">28</option>'; 86 echo '<option value="29">29</option>'; 87 echo '<option value="30">30</option>'; 88 echo '<option value="31">31</option>'; 89 echo '</select>'; 90} 91 92?>
①echoで表示させる
echo $birth;
→「Array」とechoされ、Notice: Array to string conversion のメッセージが表示される。
②var_dump($birth);で確認する
→array (size=1)
0 => string 'birth' (length=5)
③echo $birth[0];で表示させる
→「birthお名前」とechoされる
④性別(name="danjo")、生まれ年(name="birth")の項目だけのファイルを作って実行する
select .html
html
check.php
php
1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>ろくまる農園</title> 6</head> 7<body> 8 9<?php 10 11require_once('common.php'); 12 13$post=sanitize($_POST); 14 15$danjo = ['danjo']; 16$birth = ['birth']; 17 18 19 echo '性別'.'<br>'; 20 if($danjo == 'dan') { 21 echo '男性'; 22 } else { 23 echo '女性'; 24 } 25 echo '<br /><br />'; 26 27 28echo '<p>生まれ年</p>'; 29echo $birth.'年代'; 30echo '<br>'; 31 32 echo '<input type="hidden" name="danjo" value="'.$danjo.'">'; 33 echo '<input type="hidden" name="birth" value="'.$birth.'">'; 34 echo '<input type="button" onclick="history.back()" value="戻る">'; 35 echo '<input type="submit" value="OK"><br />'; 36 echo '</form>'; 37 38 39?> 40 41</body> 42</html>
common.phpは上記と同じファイルを使用
→性別女性と表示される、下記メッセージが表示される(ラジオボタンで男性を選択しても女性が表示される)
Notice: Array to string conversion in C:\xampp\htdocs\shop\shop_form_check.php on line 120
Notice: Array to string conversion in C:\xampp\htdocs\shop\shop_form_check.php on line 121
どの箇所がエラーの原因なのでしょうか?
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/10 11:07