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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

PHP

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

XAMPP

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

Q&A

解決済

1回答

980閲覧

<select>タグで都道府県を選んで、次の確認画面で選択済みにする

lnavi.bex810vh

総合スコア12

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

PHP

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

XAMPP

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

0グッド

0クリップ

投稿2020/12/06 10:22

編集2020/12/06 10:47

xampp3.2.4、PHP7.4.11の環境で簡単なWebフォームを作っておりまして、当初動作していたのですが、なぜか突然正常に動作しなくなりました。具体的には、送信元フォームで選択した都道府県を遷移先確認画面の<select>タグにもselectedの状態になるように作りたいです。foreachを使っていていますが、何かが間違っているのでしょうか?自分ではわからず、お知恵をお貸しいただきたく存じます。

<<<送信元フォーム>>> <?php require_once('login_tmp.php'); ?> <!DOCTYPE html> <html> <head><meta charset=UTF-8> <title>プロフィール登録</title> </head> <body> <h3>プロフィール登録</h3><br /> <form name="regist_profile" method="post" action="regist_profile_check.php" enctype="multipart/form-data"><br /> お住いの都道府県<br /> <select name="pref_id"> <option value="" selected>都道府県</option> <option value="0">内緒</option> <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">岩手県</option> <option value="4">宮城県</option> <option value="5">秋田県</option> <option value="6">山形県</option> <option value="7">福島県</option> <option value="8">茨城県</option> <option value="9">栃木県</option> <option value="10">群馬県</option> <option value="11">埼玉県</option> <option value="12">千葉県</option> <option value="13">東京都</option> <option value="14">神奈川県</option> <option value="15">新潟県</option> <option value="16">富山県</option> <option value="17">石川県</option> <option value="18">福井県</option> <option value="19">山梨県</option> <option value="20">長野県</option> <option value="21">岐阜県</option> <option value="22">静岡県</option> <option value="23">愛知県</option> <option value="24">三重県</option> <option value="25">滋賀県</option> <option value="26">京都府</option> <option value="27">大阪府</option> ~中略~ <option value="45">宮崎県</option> <option value="46">鹿児島県</option> <option value="47">沖縄県</option> </select><br /> メインの画像を選んでください。<br /> <input type="file" name="main_pic" style="width:400px"><br /> その他の画像1を選んでください。<br /> <input type="file" name="pic1" style="width:400px"><br /> その他の画像2を選んでください。<br /> <input type="file" name="pic2" style="width:400px"><br /> その他の画像3を選んでください。<br /> <input type="file" name="pic3" style="width:400px"><br /> ここにアピール文を入力してください。<br /> <textarea name="appeal" rows="4" cols="40"></textarea><br /> <input type="submit" value="送信"> </form> </body> </html> <<<問題のコード>>> <?php print '<h3>プロフィール確認</h3><br />'; print '<form name="regist_profile" method="post" action="regist_profile_done.php" enctype="multipart/form-data"><br />'; print 'お住いの都道府県<br />'; $pref_arr=["0"=>"内緒","1"=>"北海道","2"=>"青森県","3"=>"岩手県","4"=>"宮城県","5"=>"秋田県", "6"=>"山形県","7"=>"福島県","8"=>"茨城県","9"=>"栃木県","10"=>"群馬県", "11"=>"埼玉県","12"=>"千葉県","13"=>"東京都","14"=>"神奈川県","15"=>"新潟県", "16"=>"富山県","17"=>"石川県","18"=>"福井県","19"=>"山梨県","20"=>"長野県","21"=>"岐阜県", "22"=>"静岡県","23"=>"愛知県","24"=>"三重県","25"=>"滋賀県","26"=>"京都府","27"=>"大阪府", "28"=>"兵庫県","29"=>"奈良県","30"=>"和歌山県","31"=>"鳥取県","32"=>"島根県","33"=>"岡山県", "34"=>"広島県","35"=>"山口県","36"=>"徳島県","37"=>"香川県","38"=>"愛媛県","39"=>"高知県", "40"=>"福岡県","41"=>"佐賀県","42"=>"長崎県","43"=>"熊本県","44"=>"大分県","45"=>"宮崎県","46"=>"鹿児島県","47"=>"沖縄県"]; $post=sanitize($_POST); $pref_id=$post['pref_id']; if($pref_id='') { print '無効なパラメータです。'; exit(); } print '<select name="pref_id">'; foreach($pref_arr as $key=>$val) { print '<option value="'; if($key==$pref_id) { print '$key" selected>'.$val.'</option>'; } else { print '$key">'.$val.'</option>'; } } print '</select>'; print '<br /><br />'; print '<input type="hidden" name="pref_id" value="'.$pref_id.'">'; ?>

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

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

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

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

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

Y.H.

2020/12/06 10:42

> 正常に動作しなくなりました 具体的にどうなる事を期待しているが、どのように異なった結果になるか記載しましょう。
guest

回答1

0

ベストアンサー

$post=sanitize($_POST);

ここで壊してるんでしょう。
$postの中確認しましょう。

それと

print '<input type="hidden" name="pref_id" value="'.$pref_id.'">';

<select name="pref_id">と同じnameになってます。

投稿2020/12/06 10:40

Y.H.

総合スコア7918

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

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

lnavi.bex810vh

2020/12/06 11:06

$post=sanitize($_POST); については栃木県を選択するとstring(1) "9"が返ってきているようです。
Y.H.

2020/12/06 11:12

ブラウザの「ソースを表示」(またはデベロッパーツールなど)でHTMLソースを見て option タグの 栃木県のところはどのような出力になってますか?
Y.H.

2020/12/06 11:20 編集

というか根本的に確認画面ではselectタグにする必要なく単に表示だけにするべきです。 そのためにhiddenのinputタグ生成してるのでは?
lnavi.bex810vh

2020/12/06 11:19

ブラウザのソースを表示だと フォームを再送信しますか?この Web ページを正しく表示するには、前に入力したデータを再送信してください。これを行うと、このページで以前に実行された操作が繰り返されます。 最新の情報に更新して、このページを読み込むのに必要なデータを再送信します。 ERR_CACHE_MISS と表示されてしまいます。
lnavi.bex810vh

2020/12/06 11:21

なるほど。たしかにおっしゃる通りだと思います。間違っていたら前の画面に戻る仕様なので。。。支離滅裂ですね。申し訳ございません。そのように変更させていただきます。
Y.H.

2020/12/06 11:22

ではF12でデベロッパーツールで確認してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問