• 締切済み

チェックボックスのチェック済みを保持

PHPを使ってフォームのチェックボックスの初期値にチェック済みでページを表示させ、そのチェックを外してサブミットし、同ページにリロードした際、セッションを使ってチェックを外した状態を保持しようとしているのですがうまくいきません。 チェックを外した状態でリロードしてもチェックがついた状態で表示されてしまいます、チェックを外した状態を保持表示させるにはどのように記述すればよいのでしょうか ご教授宜しくお願いします。 【PHP】 session_start(); $event = $_POST[ 'event' ]; $_SESSION[ 'event' ] = $event; if(!empty($event)){ $event_on = 'checked';} 【フォーム】 <form action="./" method="post" name="chbox"> <input type="checkbox" name="event" id="event" value="event" $event_on >イベント <button class="btn" onClick="boxCheck()" >表示</button> </form> 環境 php5.3 html5 javascriptのlocalStrage等を使ったほうが実装が現実的なら、検討いたします。

  • PHP
  • 回答数1
  • ありがとう数11

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がよくわからないのですが POSTしたページを再読み込みしても所詮再度POSTが再度送られると思うので セッションがPOSTを超えることはできないと思いますが?

makino03
質問者

お礼

貴重なご意見、ありがとうございます

関連するQ&A

  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <html> <body> <form name="form" method="post"> <?php test1() ?> test1 <?php test2() ?> test2 <?php test3() ?> test3<br><br> <input type="submit" name="button" value="button"> </form> <?php function test1(){ if ($_POST['test1']){ echo "<input type=\"checkbox\" name=\"test1\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test1\">"; } } function test2(){ if ($_POST['test2']){ echo "<input type=\"checkbox\" name=\"test2\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test2\">"; } } function test3(){ if ($_POST['test3']){ echo "<input type=\"checkbox\" name=\"test3\" checked>"; }else{ echo "<input type=\"checkbox\" name=\"test3\">"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • header(Location:~)で$_SESSION[" "]が保持されない。

    自宅サーバー(apache2+php5+mysql5)のlocalhost環境で、 header(Lcation:~)の記述をすると、 セッションが保持されない現象が起きています。 本番環境のレンタルサーバーは、同じ記述で、 しっかりとセッションが保持されます。 この原因は、何でしょうか? php.iniの設定など、何か考えられることがあれば、 是非教えて下さい。 【やりたいこと】 ■a.php **************************************** <?php echo<<<EOD <form method="POST" action="./b.php"> <INPUT type="text" name="test"> <INPUT type="submit" name="Submit" value="確認画面へ"> </form> EOD; ?> ■b.php **************************************** <?php $_SESSION["test"]=$_POST["test"]; header("Location:./c.php"); ?> ■c.php **************************************** <?php echo $_SESSION["test"]; ?> 自宅サーバーだと、 a.phpで入れたデータが、c.phpで表示されません。 レンタルサーバーだと、 セッションが保持され、表示されます。

    • ベストアンサー
    • PHP
  • PHPでチェックボックスの結果を離れた配列に入れる

    PHPにて、複数あるチェックボックスの操作結果(オン/オフ)を変数に格納する方法を探しています。 予定として プログラム実行 → ボタンが1つと、チェックボックスが複数表示される → チェックボックス操作 → ボタンを押す → 複数のオン/オフ状況が配列に格納される といったものを作りたいと考えています。 現在はそのためのテストとして、ボタンを押した際のオン/オフの状況が画面に順に表示されるものを作っていますが、変数がUndefined Indexであると言われ、表示することができません。 現在のプログラムは下の通りです。 実際のプログラム上では、(1),(2),(3)はそれぞれソース内のかなり離れた場所にあります。 各チェックボックス(各<form>~</form>)毎にボタンを用意していないのが原因であるとは思うのですが、ボタンは特定の箇所に1つだけ用意したいと考えています。 またチェックボックス表示部とボタン表示部は(ソース的に)離れているため、 ボタン表示部で<form>を開いて、開いたまま進み、チェックボックス表示部が終わってやっと閉じる、という方法は難しいと思います。 どうすればチェックボックスの結果を離れた箇所にある配列に入れることができるのでしょうか。 宜しくお願いします。 [regist.php] <?php //(1) 更新ボタンを押すとチェックボックスのon/off結果が表示される if(isset($_POST['cmd_Print'])){ $check = $_POST["cb"]; for($i=0; $i<count($check); $i++){ print "${check[$i]}<br>"; } } //(2) 更新ボタンの表示 print("<form method=\"post\" action=\"regist.php\">"); print("<input type=\"submit\" name=\"cmd_Print\" value=\"結果表示\">"); print("</form>"); //(3) チェックボックス(on,off)を交互に表示 for($i=0; $i<5; $i++){ //チェックボックスをオンの状態で表示 print("<form method=\"POST\" action=\"./regist.php\">"); print sprintf('<input type="hidden" name="cb[]" value="off">'); print sprintf('<input type="checkbox" name="cb[]" value="on" checked="checked">'); print("</form>"); //↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる //チェックボックスをオフの状態で表示 print("<form method=\"POST\" action=\"./regist.php\">"); print sprintf('<input type="hidden" name="cb[]" value="off">'); print sprintf('<input type="checkbox" name="cb[]" value="on">'); print("</form>"); //↑チェックボックス操作後、オフの状態なら$cb[]に"off"を、オンの状態なら$cb[]に"on"を入れる } ?>

    • 締切済み
    • PHP
  • チェックボックスのデータ受け渡し

    アンケートフォームを作成しています。 アンケートの中で、チェックボックスを利用して業種を選んでもらう項目を作ろうと思うのですが、取得したデータの確認表示が上手くいかなくて困っています。 フォームの流れとしては 入力画面→確認画面→送信完了画面 と言う流れになります。 入力画面で下記のようなフォームを作ったのですが、確認画面で表示させる方法を教えていただきたいと思います。 <form name="form1" method="post" action="input.php"> <input name='check[] 'type='checkbox' id='check'value='飲食業'> 飲食業 <input name='check[] 'type='checkbox' id='check' value='小売業'> 小売業 <input name='check[] 'type='checkbox' id='check' value='サービス業'> サービス業 <input name='check[] 'type='checkbox' id='check' value='建築・不動産業'> 建築・不動産業 <input name='check[] 'type='checkbox' id='check' value='コンサルティング業'> コンサルティング業 <input name='check[] 'type='checkbox' id='check' value='その他'> その他 </form> 業種選択の他にも名前や会社名などの項目もあり、それらはセッションを利用し確認画面へ受け渡しています。 この業種選択の項目も、その他の項目と同じようにセッションを利用し、確認画面へ受け渡すことは可能でしょうか? 『飲食業、小売業、その他』のように、チェックしたもの全てを確認表示するような形にしたいのですが・・・ 宜しくお願いします

    • ベストアンサー
    • PHP
  • phpのエラーチェックについて質問です!

    phpのエラーチェックについて質問です! エラーチェックについてです><; if(isset($_POST['name'])){ $name = htmlspecialchars($_POST['name']); if (empty($name)) { $message = '未入力があります'; と記入してエラーメッセージを表示したい場所に記載してます。 しかし、フォームで <form action="regist2.php" name="form" method="post"> でsubmit押すとフォームが空白でもactionでregist2.phpに送られてしまいます><; エラーがなければ、そのままsubmitでaction=regist2.phpに送りたいと考えております。 なにか解決方法はないでしょうか? ご教授お願いします!!!!!!!!

    • 締切済み
    • PHP
  • 画面が更新されてもチェックボックスのチェック状態を維持したい

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1972507 に追加質問です。 表示されている sample.php にあるチェックボックスをON/OFFしてから 再計算ボタンを押下後、チェックボックスのON/OFF状態を 引き継いで(維持して)sample.phpを表示させたいという質問ですが、 上記質問では、チェックボックスが配列扱いとなっており、 回答者の皆さんからはforeachによる解法をお教えいただきました。 今回は、下記のように配列でない場合の質問です。 <form action="<?php $PHP_SELF ?>" method="post"> <input type="checkbox" name="fruit" value="apple">りんご</td> <input type="submit" name="exec" value="再計算"> </form> よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 入力チェックで戻る場合

    htmlのフォームactionからphp側で入力チェックを行った場合 下記のようにすると別ページに表示されますが、html側に戻って 表示するにはどのように行えばよいでしょうか。 ---html--- <form action="abc.php" method="post" > <input type="text" name="ord[name]" size="30" VALUE=""> <input type="submit" name="button_confirm" value="確認画面" /> ---abc.php--- <html> <head><title>output</title></head> <body> <?php $name = $_POST["order"]["name"]; if ($name == null) { //エラー表示 print ("名前が未入力<br />"); } ?> </body> </html>

    • ベストアンサー
    • PHP
  • チェックボックスでの送信

    チェックボックスにチェックを入れて送信したときは1を チェックを入れずに送信したときは0をPHP側で受けたいのですが チェックを入れずに送信するとPHP側で$_POST['flg']を取得できないため、エラーになります。 方法はないでしょうか? <form action="test.php" method="post"> フラグ:<input type="checkbox" name="flg" value="1" /> </form> === test.php =========== <?php $flg = $_POST['flg']; print($flg); ?>

    • ベストアンサー
    • PHP
  • 複数のチェックボックスから複数の分岐先に値を保持

    恥ずかしながら、どなたかご指導いただければとても助かります。 稚拙なソースで、かつ間違いだらけで見づらいと思いますがどうぞよろしくお願いします。 ・複数のCheckboxの値を、複数設定したボタンで分岐した時に、その値をそれぞれで引き継ぎたい (Aボタンを押してもBボタンを押しても、チェックした値は同じ値を引き継いでいく、という意味) ・Checkboxの数は多いため、全選択or全解除のボタンを使用したい(Javascript利用) ・可能であればボタンは以前に作成した画像を利用したい(例 icon_A-button.gif) ここで、<Form> に action を入れないとCheckboxの値は引き継がれず、入れてしまうとその移動先にしか移動できない また </Form> を入れる位置は本来であれば※1であると思うがここに入れると、移動もできない ※2の位置だと、反映はされるが、Bボタンを押してもAボタンの行き先に飛んで行ってしまう etc etc・・・ <Form></Form>の位置や、Javascriptのlocationなど色々と試してみましたがどうもうまくいきません onClickなど、JavaScript またはセッションなどを利用した方がよいのでしょうが、方法が判りません。 どうかよろしくお願いいたします。 confirm.php <HTML> <HEAD> <TITLE></TITLE> <script language="javascript"> <!-- function allcheck(formName, checkboxName, bool) { for(i = 0; i<eval('document.' + formName + '.elements["' + checkboxName + '"].length'); i++) { eval('document.' + formName + '.elements["' + checkboxName + '"][' + i + '].checked = ' + bool); } } //--> </SCRIPT> </HEAD> <BODY> <? $Data = array('A-data','B-data','C-data','D-data');?> <form action = "view1.php" method ="post" name ="form1"> <input type=checkbox name='ChkData[]' value = "<? print $Data[0]; ?>"> <input type=checkbox name='ChkData[]' value = "<? print $Data[1]; ?>"> <input type=checkbox name='ChkData[]' value = "<? print $Data[2]; ?>"> <input type=checkbox name='ChkData[]' value = "<? print $Data[3]; ?>"> <INPUT TYPE="button" onClick=allcheck('form1','ChkData[]',true) VALUE= "All-ON"> <INPUT TYPE="button" onClick=allcheck('form1','ChkData[]',false) VALUE= "All-OFF"> ※1 </form> <input type = "image" value="A-button" src="icon_A-button.gif" name="form1" onClick=location.href="view1.php"> <input type = "image" value="B-button" src="icon_B-button.gif" name="form1" onClick=location.href="view2.php"> ※2 </form> </BODY> </HTML> view1.php view2.php ・・・複数ボタンの飛ぶ先のソースの例 <? if( isset( $_POST[ 'ChkData' ] ) ){ $cbx_values = $_POST[ 'ChkData' ]; for( $i = 0; $i < count( $cbx_values ); $i ++ ){ print "送信された内容{$cbx_values[$i]} <br/>"; } } ?> 多分基本的なことなのでしょうが、全く見当がつきません。 以上ご指導の程、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • php入力画面から確認画面へ情報の受け渡しについて

    php 参考書を見て、入力フォームを作成しているのですが、入力画面から確認表示画面へ情報の受け渡しについて。コードは下に記載してます。 最初の入力画面ではmethod=postで送信した値を$name = $_POST['name'];に格納して次ページに値を渡すそうですが、 しかし最初の入力画面のコードに$name = $_POST['name'];と、もうひとつ、$name = $_SESSION['name'];でセッションに保存して、次ページに送るそうですが、 保存したSESSIONの値は次ページの確認表示画面から戻る際に値を保持する際に使うからだそうですが、値を次ページに送る役割が$_POSTやSESSIONにあるならば、SESSIONの記述のみで 次ページに送れると思うのですが、なぜこのコードの場合、$_POSTに値を格納する必要があるのでしょうか? 以下のような解釈で正しいでしょうか?? 「$_POSTは送られた値をフォームのvalue内にechoで出力するため、SESSIONはページから戻る場合に値を保持するため」 回答よろしくお願いいたします。 コード 入力初期画面 <?php session_start(); $errors = array(); if(isset($_POST['submit'])){ $name = $_POST['name']; if($name === ""){ $errors['name'] = "お名前が入力されていません。"; } if(count($errors) ===0){ $_SESSION['name'] = $name; header('Location:https:次ページへform2.php'); exit(); } } ?> <body> <form action="form1.php" method="post"> お名前 <input type="text" name="name" value="<?php if(isset($name)){echo $name;}?>"> <input type="submit" name="submit" value="確認画面へ"> </body> コード 確認表示画面 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } <body> <form action="form3.php" method="post"> お名前 <?php echo $name;?> <input type="submit" name="submit" value="送信する"> p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body>

    • ベストアンサー
    • PHP

専門家に質問してみよう