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

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

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

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

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

Q&A

解決済

1回答

864閲覧

PHPで複数のチェック・ボックスの値を保持したいです

dog57

総合スコア131

PHP

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

Twig

Twig は、簡潔で可読性の高いテンプレートを記述することができ、 シンプルに記述することを目的として作られた PHPテンプレートエンジンです。

0グッド

0クリップ

投稿2018/02/03 00:40

PHPで複数のチェック・ボックスの値を保持したいです。

入力フォーム→確認フォーム→登録完了 
上記のように画面を作成しています。

確認フォームから入力フォームに戻るボタンで戻る時に
複数のチェック・ボックスの値が保持されるようにするにはどうしたらよいのでしょうか?

原因が全く分からず、苦戦しております。
ご教授いただけると嬉しいです。
よろしくお願いします。

*Twigを使用しています

registartion_form.html (登録フォーム) 一部抜粋

html

1 <!-- インラインチェックボックス 趣味 --> 2 <div class="form-group"> 3 <label class="control-label col-md-4" for="checkbox">趣味 <span class="label label-info">任意</span></label> 4 <div class="col-md-4"> 5 <div class="checkbox"> 6 <label class="checkbox-inline"> 7 <input name="hobby['baseball']" type="checkbox" value="野球" {% if hobby.baseball is defined %} checked {% endif %}> 野球 8 </label> 9 <label class="checkbox-inline"> 10 <input name="hobby['football']" type="checkbox" value="サッカー" {% if hobby.football is defined %} checked {% endif %} > サッカー 11 </label> 12 </div> 13 </div> 14 </div>

registartion_form.php (登録フォーム)

hp // 開発時にこれを書かないのはNG ini_set('display_errors', true); error_reporting(E_ALL); session_start(); print_r($_SESSION); // 文字化けを治す header("Content-type: text/html; charset=utf-8"); // 変数の定義(初期化) $name = ""; $email = ""; $password = ""; $tel = ""; $prefectures = ""; $hobby = ""; $gender = ""; $contact = ""; $errorMsg = ''; // エラーメッセージ if (count($errorMsg) >= 1) { $errorMsg = $_SESSION['errorMsg']; } // // 確認フォームから戻った時のデータ保持 // // name の入力データ保持 if ($_SESSION['name'] === $_SESSION['name']) { $name = $_SESSION['name']; } //email の入力データの保持 if ($_SESSION['email'] === $_SESSION['email']) { $email = $_SESSION['email']; } //password の入力データの保持 if ($_SESSION['password'] === $_SESSION['password']) { $password = $_SESSION['password']; } //tel の入力データの保持 if ($_SESSION['tel'] === $_SESSION['tel']) { $tel = $_SESSION['tel']; } //prefectures の入力データの保持 if ($_SESSION['prefectures'] === $_SESSION['prefectures']) { $prefectures = $_SESSION['prefectures']; } // hobby の入力データの保持 if ($_SESSION['hobby'] === $_SESSION['hobby']) { $hobby = $_SESSION['hobby']; } // gender の入力データの保持 if ($_SESSION['gender'] === $_SESSION['gender']) { $gender = $_SESSION['gender']; } // contact の入力データの保持 if ($_SESSION['contact'] === $_SESSION['contact']) { $contact = $_SESSION['contact']; } // // Twig // // Composerで作成されたautoload.phpを読み込む require_once('../vendor/autoload.php'); // Twig_loader_Filesystemを使う。registration_form.phpからのtemplatesディレクトリを指定。(相対パス) $loader = new Twig_Loader_filesystem('../templates'); // $loaderをTwigの環境設定として twig instance を生成 $twig = new Twig_Environment($loader); // render echo $twig->render('registration_form.html', array( 'name' => $name, 'email' => $email, 'password' => $password, 'tel' => $tel, 'prefectures' => $prefectures, 'hobby' => $hobby, 'gender' => $gender, 'contact' => $contact, 'errorMsg' => $errorMsg ) );

confirm.html(確認フォーム)

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>確認フォーム</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" media="screen"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> </head> <body> <form class="form-horizontal" action="registration_insert.php" method="post"> <fieldset> <!-- Form Name --> <legend style=background-color:#65ace4;><h1 style=text-align:center;>確認フォーム</h1></legend> <ol class="breadcrumb"> <li><a href="index.php"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>トップ</a></li> <li><a href="registration.html">新規登録フォーム</a></li> <li class="active">確認フォーム</li> </ol> <div class="container"> <div class="form-group"> <label class="col-sm-5 control-label">氏名</label> <div class="col-sm-5"> <p class="form-control-static"> {{ name }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">メールアドレス</label> <div class="col-sm-5"> <p class="form-control-static"> {{ email }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">パスワード</label> <div class="col-sm-5"> <p class="form-control-static"> {{ password }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">電話番号</label> <div class="col-sm-5"> <p class="form-control-static"> {{ tel }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">都道府県</label> <div class="col-sm-5"> <p class="form-control-static"> {{ prefectures }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">趣味</label> <div class="col-sm-5"> <p class="form-control-static"> <!-- Twig --> {% for value in hobby %} {{ value }} {% endfor %} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">性別</label> <div class="col-sm-5"> <p class="form-control-static"> {{ gender }} </p> </div> </div> <div class="form-group"> <label class="col-sm-5 control-label">お問い合わせ</label> <div class="col-sm-5"> <p class="form-control-static"> {{ contact }} </p> </div> </div> <div class="button-group"> <div class="col-md-5 col-sm-offset-5 col-sm-7 col-xs-offset-4 col-xs-8"> <a href="registration_form.php"> <button type="button" name="singlebutton" class="btn btn-primary" id="singlebutton" onclick="history.back()">戻る</button> </a> <button type="submit" class="btn btn-primary">送信する</button> <p class="help-block" style=margin-top:15px;>以上の内容でよろしければ、送信ボタンを押してください。</p> </div> </div> </div> </fieldset> </form> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </body> </html>

confirm.php (確認フォーム) 一部抜粋

<?php // 開発時にこれを書かないのはNG ini_set('display_errors', TRUE); error_reporting(E_ALL); session_start(); print_r($_SESSION); // 文字化けを治す header("Content-type: text/html; charset=utf-8"); // POST時 if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') == 'POST') { $_SESSION["name"] = filter_input(INPUT_POST, 'name'); $_SESSION["email"] = filter_input(INPUT_POST, 'email'); $_SESSION["password"] = filter_input(INPUT_POST, 'password'); $_SESSION["tel"] = filter_input(INPUT_POST, 'tel'); $_SESSION["prefectures"] = filter_input(INPUT_POST, 'prefectures'); $_SESSION["hobby"] = filter_input(INPUT_POST, 'hobby', FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); $_SESSION["gender"] = filter_input(INPUT_POST, 'gender'); $_SESSION["contact"] = filter_input(INPUT_POST, 'contact'); $name = $_SESSION["name"]; $email = $_SESSION["email"]; $password = $_SESSION["password"]; $tel = $_SESSION["tel"]; $prefectures = $_SESSION["prefectures"]; $hobby = $_SESSION["hobby"]; $gender = $_SESSION["gender"]; $contact = $_SESSION["contact"]; } // // Twig // // Composerで作成されたautoload.phpを読み込む require_once ('../vendor/autoload.php'); // Twig_loader_Filesystemを使う。confirm.phpからのtemplatesディレクトリを指定。(相対パス) $loader = new Twig_Loader_filesystem('../templates'); // $loaderをTwigの環境設定として twig instance を生成 $twig = new Twig_Environment($loader); // render echo $twig->render('confirm.html', array ( 'name' => $name, 'email' => $email, 'password' => $password, 'tel' => $tel, 'prefectures' => $prefectures, 'hobby' => $hobby, 'gender' => $gender, 'contact' => $contact, 'errorMsg' => $errorMsg, 'string' => $string ) );

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

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

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

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

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

guest

回答1

0

ベストアンサー

history.backは完全にブラウザ依存の戻る機能になるため、戻ったあとの描画もブラウザまかせになります。なのでそれでうまくいかない場合はどうしようもない可能性があります。

戻るボタンをsubmitにして戻るようにすれば単純なpostの画面遷移なので自分で全部制御できます。(とはいえブラウザの戻る機能を使っちゃう人もいるので完全な解決はできませんのである程度は諦めるしかないと思いますが)

もしsubmitで戻るようにしてもおかしいようなら不具合があると思います。

投稿2018/02/03 01:26

dala00

総合スコア441

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

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

dog57

2018/02/03 02:13 編集

submitで作成したところ、できました! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問