質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1363閲覧

formで値を指定して、ページ遷移先で表示させたい

ppap115

総合スコア11

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/04/08 05:33

前提・実現したいこと

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

どの箇所がエラーの原因なのでしょうか?
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

下記部分で配列として定義しているので、そのまま文字列連結できません。

PHP

1$pass2 = ['pass2']; 2$danjo = ['danjo']; 3$birth = ['birth'];

また「ろくまる農園」というタイトルから、問題の多い参考書だったような気がします。少なくとも$_POSTの扱いがおかしいです。別の参考書を探されることをお勧めします。

投稿2020/04/08 07:23

kei344

総合スコア69606

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppap115

2020/04/10 11:07

ありがとうございます。 別の参考書を探してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問