PHPでのフォームバリデートと値保持について

このQ&Aのポイント
  • PHP+Apache(+MySQL)の環境でフォームバリデーションと値保持の方法を知りたい。
  • フォームの各種要素の値を保持する方法と入力規則のチェックとエラーフラグ表示について知りたい。
  • フォームの入力内容を確認し、正しい場合は送信、間違っている場合はエラーフラグを表示しながらフォームに戻りたい。
回答を見る
  • ベストアンサー

PHPでのフォームバリデートと値保持について

いつもお世話になってます。PHP+Apache(+MySQL)の環境です。 フォーム(ラジオ、チェック、プルダウン、テキスト)に入力された内容をチェックし,すべて正しければ確認画面、間違いがあればフォーム画面にもどるが、その際、正しい項目の入力内容は保持したまま、さらに、間違いの項目に対して、エラーの内容を各項目のところ(ページ上部にまとめて表示するのではなく)に表示したいです。 要は、フォームの各種要素の値を保持する方法 と 入力規則の各種(値有無、条件合致等)チェックとフラグ表示をしたいです。 フォーム入力 └値有無チェック   ├全てあたいがあれば─内容確認┬送信(完了)   │                    └もどって修正(値保持したまま)   └値抜け、違反(チェックボックスで指定選択数オーバー、文字数オーバー等)があれば・・・      └入力画面にもどる(正しい項目は値保持、間違っている部分にはエラー内容のフラグ表示) <状況>フォームから値を受信し、空白の場合に当該項目に”未回答です!!”というメッセージを表示するところまでできています。違反なく入力されたところにメッセージは表示されませんが、値が消えます(保持されません)。 #vali.php if(!isset($_POST['exec'])){ include('temp/anc.php'); exit; } if(isset($_POST['exec'])){ function HTMLsc($str){中身省略します} $ErrorMsg = array(); $ErrorCnt = 0; for($i=1; $i<5; $i++){ $num = "q".$i; $$num = HTMLsc($_POST["$num"]); if(empty($$num)){ $ErrorMsg["$i"] = "未回答です"; $ErrorCnt++; }else{ /*この部分に作り込むのかなぁ?*/ } } if($ErrorCnt != 0){ include('temp/anc.php'); exit; } include('temp/comp.php'); } ----------- #anc.php <!-- 項目ごとに簡単に記述します --> <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問1.元気ですか?</h3> <input type="radio" name="q1" value="1">はい <input type="radio" name="q2" value="2">いいえ <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問2.朝なに食べた?</h3> <input type="checkbox" name="q2[]" value="1">ごはん <input type="checkbox" name="q2[]" value="2">パン <input type="checkbox" name="q2[]" value="3">みそ汁 <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[1])){echo $ErrorMsg[1];}?> <h3>問3.起きてまず何する?</h3> <select name="q3"> <option value="1">顔洗う</option> <option value="2">歯磨く</option> <option value="3">ぼーっとする</option> </select> <input type="checkbox" name="q2[]" value="4">牛乳 <? if(isset($ErrorMsg[4])){echo $ErrorMsg[4];}?> <h3>問4.なんか書いて</h3> <input type="text" name="q4" value="<?php echo $_POST["q4"];?>"> <input type="submit" name="exec" value="終了・確認"> ※ラジオボタンの数、チェックボックスの数、プルダウン項目数は変化に耐えうる構造がよいです。参考サイトの紹介でもOKです。結構探しましたが単独での参考しかありませんでした

  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

こんにちは。 あぁ、なるほど・・・。 「登録しました」画面以外は、一つでやっちゃうんですね。 >値保持したいけど見た目が・・・ の問題は、テキストならreadonly="readonly"でもよさそうですが、 ラジオとかは、選択されていないものも出すんですかね? 全部出したいならdisableでやらんとしゃーないですが、hiddenを用意しても、nameの問題は残ります。 普通に表示のみでやった方が無難かなぁ・・・。 見た目はテーブルレイアウトで凝ってしまえば、そんなに変じゃないと思います。 >確定と修正をPHPのみで・・・ 両方submitでOKです。 <input type="submit" name="apply" value="確定"> <input type="submit" name="back" value="戻って修正"> この場合、PHP側で、 if($_POST['apply']){ // 確定処理 } if($_POST['back']){ // 戻す処理 } で大丈夫。 submitもname=valueのペアで飛んできます。

nccno21
質問者

お礼

お返事が大変遅くなりまして、申し訳ありません。 フォーム入力時の値保持ですが、セッションを使って無事に希望通りの動作を実現することができました。 結局、ファイルは3つに分け(1つだとごちゃごちゃしてわけがわからなくなったため)、1.php入力、2.php確認(戻るか送信か)、3.php送信実行、終了表示という構成にしました。 送信後はブラウザの戻るを押しても不正アクセスを表示させて重複投稿防止までも実現できました。 丁寧なご説明ありがとうございました。 P.S 回答内容の表示(確認画面)は、CSSで地道に装飾します! 本当にありがとうございました。

その他の回答 (2)

回答No.2

こんばんは。 えーと・・・、 ファイル構成がよくわかりませんです・・・。 ファイル構成 個々のファイルの役割 画面遷移(どうしたいか) このあたり、補足して頂けますか?

nccno21
質問者

補足

お返事が遅くなり申し訳ありません。 ファイルは1つ(form.php)で、役割は、 1.アンケート入力 2.確認画面 3.送信確定(確定後はcomp.phpへ) #form.phpの中身は、文字数の都合ですべて記述できませんでしたが、概要は1回目のご回答のお礼部分に記述している通りです。 ■現時点で実現できている部分(流れと役割) #form.phpにて 1$errormessagearayの初期化 2$_POSTと$_REQUESTがあるか否か 3 2がともに存在すれば回答内容のバリデーション(radio=値があるか、check=指定した個数以上あるか、text=指定条件を満たしているか等) 4-1エラーがあれば、$errormessagearray[]に配列として格納し、submitされたときに入力画面に戻り、各項目にエラーを表示する(↓のような感じ)。 print($errormessagearray[1]; 問1.元気ですか? <input type="radio" name="q1" value="1"<?php if($q1==1){print("checked"); ?> /> <input type="radio" name="q1" value="2"<?php if($q1==2){print{"checked"); ?> /> 4-2エラーがなければ入力内容の確認画面を表示するが・・・・if(empty($errormessagearray)){ ◆◆ここで悩んでます◆◆ ここで考えること(したいこと)が、 ・表示はtableなどを使って羅列(文字の羅列)するのではなく、実際の入力画面に似たイメージにしたい→inputにdisabled属性を加えてみたが以降の弊害が・・・。 ※見た目が羅列じゃないならdisableじゃなくてもよいのだが。 ・確認画面を表示し、OKならcomp.phpで回答内容をDBに登録すると同時に終了メッセージ(正常に送信しました等)を表示。 NG(やっぱり修正したい)なら自分自身に返すが、値は保持しないといけない ・でもdisableは値を保持できないため、別途、input hiddenをアンケート項目数分用意し隠して保持させる必要がある。 ・しかし、1つのFORM内でaction先を変えることは難しい。submitを2つ用意し、飛び先を変えるにはjavascriptを使えばできるようだが、できればPHPを使いたい。 ---------------------- アンケートとしては、最終確認画面で「確定」するか「やっぱり修正」するかという部分で、 ・2つの条件分岐の方法 ・値の保持の仕方 でつまづいております。 アドバイス頂けると幸いです!

回答No.1

こんばんは。 これじゃ問4以外は、どう頑張っても消えますよ・・・。 まずは、temp/comp.phpに、保持する項目分のhiddenを作る。 この時、temp/comp.phpからtemp/anc.phpに戻る時には、submitで戻るようにさせる。 (POSTさせないと値が戻ってこないので・・・) 次に問1から問3は選択項目なので、復元させるためのロジックを書く。 例えば・・・、 $chk_q1=array($_POST['q1']=>'checked="checked"'); <h3>問1.元気ですか?</h3> <input type="radio" name="q1" value="1" <?php echo $chk_q1['1']?>>はい <input type="radio" name="q2" value="2" <?php echo $chk_q1['2']?>>いいえ のような感じで、復元させないといけません・・・。 まぁ、やり方はいろいろです。

nccno21
質問者

お礼

昨晩から修正を続け、 #初期化 $errormessagearray = array(); #初回アクセス判別   if($_POST && $_REQUEST))・・・・・・   #入力内容バリデーション    if(q1 != 1 && q2 != 2){$errormessagearray[1]="選択して下さい"; if($q2cnt < 1){$errormessagearray[2]="1つ以上選んで"; if(empty($4)){$errormessagearray[4]="入力して";   }else{ $errormassagearray[0] = "アンケートに回答して下さい"; } if(empty($errormessagearray)){ ◆◆ここで悩んでます◆◆ }else{ print($errormessagearray[0]; <FORM method="・・・・・・・・> print($errormessagearray[1]; 問1.元気ですか? <input type="radio" name="q1" value="1"<?php if($q1==1){print("checked"); ?> /> <input type="radio" name="q1" value="2"<?php if($q1==2){print{"checked"); ?> /> print($errormessagearray[2];・・・・・・・・・・・・ と、まぁこんな感じで邪道ですが、個別に処理することにしました。 そして、今はまっているのが、 ◆◆ここで悩んでます◆◆の中身です。 つまり、バリデーションも通過し【さぁ送信するよ】という確認画面の部分です。 要望は、tableなどで羅列するのではなく、視覚的にわかりやすいようにdisable(見た目が近ければ別の方法でも可)を使用したいこと。 そのためには値保持のためにinput hiddenを別に加えてやる必要があることまでわかっています。 formのactionを2つ設定することはjavascriptが必要みたいでした。PHPだけでは無理でしょうか。 またsubmitを2つ用意する方法では、actionは1つなのに意味あるのか?という疑問もあります。 以上踏まえて、何かアドバイスをいただけますか?

nccno21
質問者

補足

アドバイスありがとうございます。 一度に同一ファイルで、汎用処理で、様々な条件に対応して、・・・ やりたいことが一度に少し多すぎたように思いました(反省)。 まずは、ラジオの場合、チェックの場合、プルダウンの場合、テキストの場合で、それぞれ単体の処理を同一ファイルで実現させてみようと思います。 その上でループ処理、汎用処理を考えてみます。 難しければ項目は20問程度なので、決めウチします。

関連するQ&A

  • PHP

    PHPで <p>曜日</p> <p> <input type="checkbox" name="youbi[]" value="1" <?php if(strstr($result[4],'1')) echo"checked"; ?>>月 <input type="checkbox" name="youbi[]" value="2" <?php if(strstr($result[4], '2')) echo"checked"; ?>>火 <input type="checkbox" name="youbi[]" value="3" <?php if(strstr($result[4],'3')) echo"checked"; ?>>水 <input type="checkbox" name="youbi[]" value="4" <?php if(strstr($result[4],'4')) echo"checked"; ?>>木 <input type="checkbox" name="youbi[]" value="5" <?php if(strstr($result[4],'5')) echo"checked"; ?>>金 <input type="checkbox" name="youbi[]" value="6" <?php if(strstr($result[4],'6')) echo"checked"; ?>>土 <input type="checkbox" name="youbi[]" value="0" <?php if(strstr($result[4],'0')) echo"checked"; ?>>日 </p> <p>時間</p> <p> <input type="submit" value="設定" /> とやると日曜日を選択してsubmitするとチェックが外れます。なぜでしょうか?

    • ベストアンサー
    • PHP
  • 大量のcheckboxにcheckedを入れる

    チェックボックスが50個あります。 送信ボタンを押して元のページを再度開きます。 そのときにチェックしたボックスにチェックを入れた状態にしたいです。 inputタグの中に<?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>を入れていますが単調になってしまいます。 単調にならずにする方法はありますか? <input type="checkbox" name="chk1[]" value="a1" />の場合はインデックスが固定でないのでできませんでした。 その他いけない箇所があれば教えて下さい。 お願いします。 <?php if(isset($_GET["chk1"])){ $checkbox1 = $_GET["chk1"]; for($i=0; $i<sizeof($checkbox1); $i++){ print $checkbox1[$i]."<br />"; } } if(isset($_GET["chk2"])){ $checkbox2 = $_GET["chk2"]; foreach($checkbox2 as $key => $val){ print $val."<br />"; } } ?> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form method="get" action="checkbox.php"> <input type="checkbox" name="chk1[]" value="a1" /> <input type="checkbox" name="chk1[]" value="a2" /> <input type="checkbox" name="chk1[]" value="a3" /> <input type="checkbox" name="chk1[]" value="a4" /> <input type="checkbox" name="chk1[]" value="a5" /> <input type="checkbox" name="chk1[]" value="a6" /> <input type="checkbox" name="chk1[]" value="a7" /> <input type="checkbox" name="chk1[]" value="a8" /> <input type="checkbox" name="chk1[]" value="a9" /> <input type="checkbox" name="chk1[]" value="a10" /> <br /> <input type="checkbox" name="chk2['b1']" value="b1" <?php if(isset($checkbox2) && in_array('b1',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b2']" value="b2" <?php if(isset($checkbox2) && in_array('b2',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b3']" value="b3" <?php if(isset($checkbox2) && in_array('b3',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b4']" value="b4" <?php if(isset($checkbox2) && in_array('b4',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b5']" value="b5" <?php if(isset($checkbox2) && in_array('b5',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b6']" value="b6" <?php if(isset($checkbox2) && in_array('b6',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b7']" value="b7" <?php if(isset($checkbox2) && in_array('b7',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b8']" value="b8" <?php if(isset($checkbox2) && in_array('b8',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b9']" value="b9" <?php if(isset($checkbox2) && in_array('b9',$checkbox2)){echo ' checked';} ?>/> <input type="checkbox" name="chk2['b10']" value="b10" <?php if(isset($checkbox2) && in_array('b10',$checkbox2)){echo ' checked';} ?>/> <br /> <input type="submit" value="送信" /> </form> </body> </html>

    • 締切済み
    • PHP
  • チェックボックスの初期選択と選択保持

    複数のチェックボックスのうちどれかを初期選択させ、ボタン押下後は選択保持をさせたいです。 片方のみならできるのですが、どなたかご教授いただけるとうれしいです。 現在のソースはこんな感じになっていて選択したものの保持はできるのですが、初期選択ができていません。よろしくおねがいします。 <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
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • フォームで受け取った値のPHP表示方法

    フォームのチェックボックスから選択したメニューを 同じページに表示するというPHPのサンプル練習ですが 複数選択した場合、適切に「と」が入るようにするには どのような方法があるのでしょうか? 以下のサンプルの場合だと1つの場合でも 複数選択の場合でも全てに「と」が入ってしまいます。 「echo $_POST["check"][$i]」の次に if条件文のような物を付ければよいと思い試しているのですが なかなか上手く行きません。 初学者ですが何か分かりやすく簡単な方法があれば お教えください。 よろしくお願いいたします。 ---------------------------------------------------------- <?php if(isset($_POST["check"])){ for($i=0; $i<count($_POST["check"]); $i++){ echo $_POST["check"][$i]."と"; ←※※※ } echo "が好きです。"; } ?> <html> <body> <form method="post" action=""> <input type="checkbox" name="check[]" value="きつねうどん">きつねうどん <input type="checkbox" name="check[]" value="カレーうどん">カレーうどん <input type="checkbox" name="check[]" value="ざるそば">ざるそば <input type="checkbox" name="check[]" value="天ぷらうどん">天ぷらうどん <input type="submit" value="何が好き"> </form> </body> </html> -----------------------------------------------------------

    • ベストアンサー
    • PHP
  • php + javascriptで値の保持

    現在、ラジオボタンによるデータの受け渡しを調べているのですが submitボタンを使わずに、データ遷移がしたいと思い 色々やっているのですが上手く行きません。 これは実現可能なのでしょうか? <input type="radio" name="hoge" value="1" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check1; ?>> <input type="radio" name="hoge" value="2" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check2; ?>> <input type="radio" name="hoge" value="3" onclick="location.href='<?php echo $_SERVER['REQUEST_URI']; ?>'; test(this.value);" <?php echo $check3; ?>> 上記のソースの様な感じでとりあえずやってみましたが、 「ボタンを押したら即移動」は可能なものの、value値の保持が javascript上でどうやったらいいか分かりません。 ※$check1~3は遷移後のchcked判定の変数です ※test関数においてのvalueを格納する処理が分かりません やはり無難にsubmitボタン+セッション関数等で構築した方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • phpがうまく動きません。

    phpで4択のクイズを作りたいのですが 正解のラジオボタンを選んでもカウントされないのと 答え合わせを押すと正解だった箇所を赤く表示したいのですがなんて書けばよいのか どこにそのコードを入れるのかよくわかりません <状態> ・5つのデータがmyadminに保存されています ・データベースの内容は表示されます。 ・答え合わせを押すと正解のラジオボタンを選んだ数が表示されるようにしたいです ・保存ボタンは閉じても答えを保存するためにあります ・q_noは8ケタ固定であり、左から5つ目までは固定であと3桁は999問入れられるよう設定してあります ・q_ansはデータベースに答えの値(1~4)が入れてあります ・データベース名はproblemです <省略> $res_set = mysql_query($sql); while ($row=mysql_fetch_array($res_set)){ ?> <form method="POST" action="H2102.php"> <?php echo $row['q_no'] . " "; ?> <br> <?php echo $row['q_text'] . " "; ?><br><br> <br> <?php echo "ア"; ?> <input type="radio" name="q_ans" value="1"> <?php echo $row['q_point1'] . " "; ?> <br><br><br> <?php echo "イ"; ?> <input type="radio" name="q_ans" value="2"> <?php echo $row['q_point2'] . " "; ?> <br> <br><br> <?php echo "ウ"; ?> <input type="radio" name="q_ans" value="3"> <?php echo $row['q_point3'] . " "; ?> <br><br><br> <?php echo "エ"; ?> <input type="radio" name="q_ans" value="4"> <?php echo $row['q_point4'] . " "; ?> <br><br><br> <br> <input type = "submit" name="save" value="保存"> <?php if(isset($_POST['save'])){ $_SESSION['save'] = $_POST['q_ans']; //保存すると選んだ回答を保存 } ?> <?php } ?> </form> <form method="POST" action="H2102.php"> <input type = "submit" name="ans" value="答え合わせ"> <?php //正解かどうかをチェック if(isset($_POST['ans'])){ $a = $_SESSION['a']; if($row['q_no'] == $_POST['q_no'] && $_POST['q_ans'] || $_SESSION['save'] == $row['q_ans'] ){ $_SESSION['a'] = $a + 1; //q_noが一致かつ保存した値または選んだ解答(値)が一致していれば1問につき1つカウントする $a = $_SESSION['a']; } echo $a; //カウントされているかをチェック } ?> <input type = "submit" name="del" value="カウント初期化"> <?php if(isset($_POST['del'])){ session_unset(); } ?> </form> <br> <?php } ?> 足りない情報があれば追記します

    • 締切済み
    • PHP
  • 検索時の選択内容を保持する方法 2

    昨日こちらのURL『http://okwave.jp/qa/q6477112.html』にて質問させていただきました。 ご回答を締め切らせていただいたため、誠に勝手ながら新たに質問の方させていただきました。 PHP検索フォーム、検索時の選択内容を保持する方法にて、先日ご回答いただいた 下記のコードを基本として利用しているのですが、 <? //checkbox if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked"; if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked"; //radio if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked"; //select if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected"; print <<<eof <form> <input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A <input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B <input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1 <input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2 <input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3 <select name="test_d"> <option value="">---</option> <option value="1"{$selected["test_d"][1]}>D-1</option> <option value="2"{$selected["test_d"][2]}>D-2</option> <option value="3"{$selected["test_d"][3]}>D-3</option> </select> <input type="submit" value="go"> </form> eof; ?> 複数選択のチェックボックスがある場合の方法をご存じの方いらっしゃいましたら、 是非ともご教授お願い致します。 複数チェックボックスは、 <input type="checkbox" name="bungu[0]" value="鉛筆" >鉛筆 <input type="checkbox" name="bungu[1]" value="定規" >定規 <input type="checkbox" name="bungu[2]" value="色鉛筆" >色鉛筆 <input type="checkbox" name="bungu[3]" value="ペン" >ペン <input type="checkbox" name="bungu[4]" value="絵具" >絵具 <input type="checkbox" name="bungu[5]" value="ハサミ" >ハサミ <input type="checkbox" name="bungu[6]" value="ボールペン" >ボールペン というようなものを利用しています。

    • ベストアンサー
    • PHP
  • セレクトボックスの選択を保持したい。入力フォーム。

    セレクトボックスの選択を保持したい。入力フォーム。PHP 送付画像のような、セレクトボックスの「時間指定1」で選択したい時間をセレクトボックスから選んで、確認画面へのボタンをクリックすると、「時間指定1」にまた、戻ってしまいます。ここのセレクトボックスの選択をキープしたいのですが、どうコードを書けば良いのかわかりません 提示したコードにもあるように 参考書に書いてあったのですが、セレクトボックスの選択をキープするプログラミングコードを以下のようにすれば良いと。そのまま書いてみたのですが、確認画面へのボタンをクリックすると、やはり「時間指定1」に戻ってしまいます。 <option value="10:00~11:00"><?php if(isset($timehh1) && $timehh1==="10:00~11:00") { echo "selected" ;} ?>>10:00~11:00</option> どこが間違っているのでしょうか? コードを教えて頂けないでしょうかいただけないでしょうか?よろしくお願いいたします。困っています。 以下書いたコードになります。 <?php session_start(); $errors = array(); if(isset($_POST['submit'])) { $time4 =$_POST['time4']; $timehh1 =$_POST['timehh1']; if($time4 === "") { $errors['time4'] ="第1希望:※月と日付を選択してください。 "; } if($timehh1 === "") { $errors['timehh1'] ="第1希望:※時間指定1を選択してください。 "; } if(count($errors) === 0) { $_SESSION['time4'] = $time4; $_SESSION['timehh1'] = $timehh1; } if(isset($_GET['action']) && $_GET['action'] === 'edit'){ $time4 = $_SESSION['time4']; $timehh1 = $_SESSION['timehh1']; } ?> <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8"/> <?php echo "<ul>";foreach($errors as $value) { echo "<li>"; echo $value; echo "</li>"; } echo "</ul>"; ?> </head> <body> <form action ="form1.php" method ="post"> <td class="b">第1希望:<span class="fontS">※</span></td> <input type="date" id="input_date1" class="cal lt_004 hasDatepicker" name="time4" value="<?php if(isset($time4)){ echo $time4; } ?>"/></td > <select id="input_time1" name="timehh1"> <option value="">時間指定1</option> <option value="10:00~11:00"><?php if(isset($timehh1) && $timehh1==="10:00~11:00") { echo "selected" ;} ?>>10:00~11:00</option> <option value="11:00~12:00"><?php if(isset($timehh1) && $timehh1==="11:00~12:00") { echo "selected" ;} ?>>11:00~12:00</option> </select > <input type ="submit" name ="submit"value="確認画面へ"/> </form> </body></html>

    • ベストアンサー
    • PHP
  • formから送信する値について

    nameを同じくする複数のチェックボックスのチェック項目について valueを「+」や「,」でつなげて送信したいです 例えば <input type="checkbox" name="color" value="red" checked > <input type="checkbox" name="color" value="blue" checked> <input type="checkbox" name="color" value="green" checked > <input type="checkbox" name="option" value="A" checked > <input type="checkbox" name="option" value="B" checked > <input type="checkbox" name="option" value="C" checked > ならば、submitされるURL変数は ?color=red,blue,green&option=A+B+C になるようにしたいのです よろしくお願いします

    • ベストアンサー
    • HTML

専門家に質問してみよう