セレクトボックスの選択を保持したい。入力フォーム。

このQ&Aのポイント
  • セレクトボックスの選択を保持する方法を知りたい。
  • セレクトボックスの選択をキープしたいが、うまくいかない。
  • どの部分が間違っているのか教えてほしい。
回答を見る
  • ベストアンサー

セレクトボックスの選択を保持したい。入力フォーム。

セレクトボックスの選択を保持したい。入力フォーム。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
  • 回答数2
  • ありがとう数2

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

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

原因はここです。 <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> 例えばこれが、「それ」だったとしたら、 <option value="10:00~11:00">selected>10:00~11:00</option> と、optionタグの外にselectedが来てしまいます。 ですので、以下のように直してください。 (面倒なのでそのままコピペすればOKです。) <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> それだけで治ります。

その他の回答 (1)

回答No.2

もう一つ。。 if(isset($_POST['submit'])) { これの閉じる部分がないので、最後にもう一個"}"が必要でした。 こちらでデバッガーで実行した結果を添付しておきます。 恐らくこれで、思ってる通りの結果ではないかと、 思います。

関連するQ&A

  • PHPのセレクトボックスの初期値について

    phpのセレクトボックスの値を配列で指定したのですが初期値の表示がうまくいきません。 以下は現在のソースです。 $start_time[$j]はDBの取得値で取得配列と表示配列が一致するものを初期表示する というコードが以下になります $time_array = array( "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ); for( $a=0; $a < count( $time_array ); $a++){ $selectedStartTime =($time_array[$a] == $start_time[$j])?" selected":""; $startTimeSelectBox .= "\t<option value=\"{$time_array[$a]}\"{$selectedStartTime}>{$time_array[$a]}</option>\n"; } 疑問点ですが別条件で(たとえば$start_time[$j]にデータが0の時)配列の指定した値を選択したいです。 下記のようにそれぞれのvalue値の時に条件を指定すればできるのですが配列の時には どのように初期値を設定すればいいかわかりません。        <option value="0" <?php if($start_time[$j] == "0") { echo "selected"; } ?>> 0 <option value="1" <?php if($start_time[$j] == "1") { echo "selected"; } ?>> 1</option> <option value="2" <?php if($start_time[$j] == "2") { echo "selected"; } ?>> 2</option>         ・         ・         ・         ・ 条件を指定したときに初期値を設定したいです。どのように実装すればいいでしょうか。 よろしくいお願いします。

    • ベストアンサー
    • PHP
  • phpでのセレクトボックスからの受け渡しについて

    phpにおいての、セレクトボックスにより選択させたデータの受け渡しについて、どなかか教えてください。 授業評価アンケートのデータ収集システムを卒研で開発しています。 その中の一部で、 年度・学年・クラス を各々セレクトボックスにて選択させるページがあります。 仮にpage1.htmlとし、以下にその一部を示します。 <FORM method="post" action="page2.php" enctype="application/x-www-form-urlencoded"> <P> 年度: <SELECT name="nendo"> <OPTION value="1">2006</OPTION> <OPTION value="2">2007</OPTION> <OPTION value="3">2008</OPTION> <OPTION value="4">2009</OPTION> <OPTION value="5">2010</OPTION> <OPTION value="6" selected>2011</OPTION> <OPTION value="7">2012</OPTION> </SELECT> 学年: <SELECT name="gakunen"> <OPTION value="1">1年</OPTION> <OPTION value="2">2年</OPTION> <OPTION value="3">3年</OPTION> <OPTION value="4">4年</OPTION> </SELECT> クラス: <SELECT name="class"> <OPTION value="1">1組</OPTION> <OPTION value="2">2組</OPTION> <OPTION value="3">3組</OPTION> <OPTION value="4">4組</OPTION> <!-- --> </SELECT> </P> <P><INPUT type="submit" value="科目選択へ"> <INPUT type="reset" value="取り消す"></P> 次のページ(page2.php)では 科目・分類 を各々セレクトボックスにて選択させるページを用意します。 その際に、科目・分類の各々のセレクトボックスの上に、 前ページ(page1.php)にて選択された値(valueではなく文字列(2008,1年))を表示します。 年度:~~ 学年:~~ クラス:~~ これについては以下の方法で成功しました。 年度:<? echo $_POST["nendo"]+2005?> 年 学年:<? if ($_POST["gakunen"] == "1"){ echo "1年"; } else if ($_POST["gakunen"] == "2"){ echo "2年"; } else if ($_POST["gakunen"] == "3"){ echo "3年"; } else if ($_POST["gakunen"] == "4"){ echo "4年"; } ?> クラスについても同様の手法。 ここからが本題です。 page1.html→page2.php に受け渡した年度・学年・クラスのデータを page2.php→page3.php にも同じように、年度:~~・・・と表示させたいのですが、わかりません。 hiddenというのを使うのでしょうか。 調べても、このパターンのように1ページまたいでのデータの受け渡し方法がよくわかりません。 他の方法もあるのでしょうか。 どなたか具体的に教えてください!

    • 締切済み
    • PHP
  • php セレクトボックス 値取得

    現在phpでフォームを作成しています。 都道府県選択のフォームがあり、データベースに都道府県のマスタが管理されています。 都道府県には北海道~沖縄まで順番にIDが振られています。 選択フォームはセレクトボックスになります。 ソースは簡単ですが <option value="<?php echo $prefid; ?>"><?php echo $prefname; ?></option> とループさせて下記の状態になります。 <select name="pref"> <option value="1">北海道</option> <option value="2">青森県</option> <option value="13">東京都</option> <option value="20">愛知県</option> <option value="47">沖縄</option> </select> とあり、選択された(例:北海道を選択)のち確認画面では1と表示されます。 これを北海道と表示させたいのですが、どのように作ったらよろしいでしょうか? sessionは使用しています。 $_SESSION['pref'] = $_REQUEST['pref']; で値受け取っています。 おわかりの方がいらっしゃいましたらご教示お願いします。

    • 締切済み
    • PHP
  • チェックボックス&セレクトボックスからの検索

    htmlからチェックボックス&セレクトボックスを使って postgresで検索し、phpで表示するフォームを作っています。 チェックボックスで検索されたデータをセレクトボックスで 絞り込みたいのですがうまくいきません。 or の部分を and に変えたりしたのですが検索結果が 変わってしまいます。 どなたか教えてもらえないでしょうか。 HTML <input type="checkbox" name="chk1" value="1">chk1 <input type="checkbox" name="chk2" value="1">chk2 <select name="add">  <option value="北海道">北海道</option>  <option value="沖縄">沖縄</option> </select> PHP  if ($chk1 != "") {   $sqlSelect .= "abc = '" . $chk1 . "' or ";  }  if ($chk2 != "") {   $sqlSelect .= "abc = '" . $chk2 . "' or ";  }  if ($add != "") {   $sqlSelect .= "add = '" . $add . "' ;  }

    • ベストアンサー
    • PHP
  • セレクトボックスの値を保持したい。

    お世話になります。 カスタムフィールドで設定した値を取り込み、セレクトで選択出来るようにしています。 ページ遷移後に選択した値を保持した状態にしたいのですが、手法が分かりません。 <?php $my_tax = 'area'; $parent_terms = get_terms( $my_tax, array('hide_empty' => false, 'parent' => 0) ); ?> <select name="area"> <option value="">エリア</option> <?php for($i = 0; $i < count($parent_terms); $i++){ ?> <?php $term = $parent_terms[$i]; ?> <option value="<?php echo $term->term_id; ?>"><?php echo $term->name; ?></option> <?php } ?> </select> こちらをどう変更したら宜しいでしょうか?

    • 締切済み
    • PHP
  • ☆PHP <SELECT>タグについて

    セレクトタグのデフォルト値についてですが、一般の実装の仕方では、以下のようにするかと思いますが、 ・ソース例 -------------------------------------------- select.php -------------------------------------------- <!--同じページでのセッション間でのやりとり で、「送信」を押されると、POSTデータを自分に返し前操作情報をそのまま持続させる。簡単に言えば、ページが切り替わっても各nameプロパティの値を持続させたいのです。--> <html>d <head> </head> <?php session_start(); if(isset($count))$count =0;//カウンタが殻なら 0を代入 session_register("count","onamae");//セッション変数を登録 $count++;//アクセスカウンタ ?> <body> <form> <form method="POST" action="select.php" > <input type="text" name="namae" value="<?php echo $_POST['onama']; ?>"<!--問題なしです--> <select name="food" > <option value="れもん" selected>れもん</option><!-- 注目!! --> <option value="すいか">すいか</option> <option value="オレンジ">オレンジ</option> </select> <input type="submit" value="送信" > </form> </body> </html> -------------------------------------------------------------------------- こんな感じですが、<select>のデフォルト値をページが切り替わっても選択された値(ユーザ操作)が持続されません。 誰か親切な方早急にご教授くださいませ。

    • ベストアンサー
    • PHP
  • セレクトボックスの値を保持

    現在php等を使用してメールフォームを作成してる初心者です。 入力確認時、エラー等でフォーム画面に戻った時にセレクトボックスで 選択した情報を保持させたいのですが上手くいきません。 恐らく function MenuValue の指定の仕方が悪いのではと思うのですが・・・ 色々やってみてはいるのですがどう直したらよいか解りません。 ソースは・・・ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>メールフォーム</title> </head> <body> <?php ~中略~ /* ****************************************************************** 確認時エラー等でフォーム画面に戻った時に入力した情報が消えない設定 ドロップダウンリスト用 ****************************************************************** */ function MenuValue($v,$r) { if(!empty($_POST[$v])) { if($_POST[$v] == $r){ return " checked='checked'"; } } } お問い合わせ内容のカテゴリ<br> <select name="menu" id="menu"> <option value="未選択"'.MenuValue("menu","未選択").'>▼選択して下さい</option> <option value="野菜"'.MenuValue("menu","野菜").'>野菜</option> <option value="果物"'.MenuValue("menu","果物").'>果物</option> </select> <br> <br> <input name="reset" type="reset" id="reset" value="クリア"><input name="submit" type="submit" value="確認"> </form> ~後略~ となたかご指導宜しくお願い致します。 サンプルソース等添付頂ければ尚有難いです。

    • ベストアンサー
    • PHP
  • セレクトボックス内の文字の文字の大きさを変更したい

    セレクトボックス内の文字の文字の大きさを変更したいのですが、上手くいきません。付属画像にある、上のセレクトボックス(緑色)は自分のコードのWeb表示画像なのですが、同じく付属画像の下にある、セレクトボックス(青色)は選択するセレクトボックス内の文字が少し大きく表示されています。(他の会社のHP画像です。)ちなみにセレクトボックス自体の大きさはどちらも同じ大きさです。 文字を大きくしたいのですが、どうしたらよいでしょうか?また、文字を大きくすると、勝手にボックス横幅が広がってしまうでしょうか? 以下がコードになります。 <!DOCTYPE html> <html> <head> <meta content="text/html; charset=utf-8"/> <title>お問い合わせ</title> <link rel="stylesheet" href="syoki.css"> <style> /* セレクトボックスの位置 */ .auto-style2 { margin: auto; text-align: center; } </style> </head> <body> <form> <h2>支払方法:※</h2> <div class="auto-style2"> <select name="list" id="pay"> <option value=""></option> <option value="クレジットカード"<?php if(isset($pay) && $pay==="クレジットカード") { echo "selected" ;} ?>>クレジットカード</option> <option value="銀行振込"<?php if(isset($pay) && $pay==="銀行振込") { echo "selected" ;} ?>>銀行振込</option> </select> </div> <p></p> <p></p> <p></p> <span colspan="2"><input type ="submit" name ="submit"value="確認画面へ"></span> </form> </body></html> ◎(syoki.css)◎ /* セレクトボックスのスタイル */ #pay { border: 2px solid #63e02d; /* 枠線 */ padding: 0.5em; /* 内側の余白量 */ background-color: snow; /* 背景色 */ width: 28.8em; /* 横幅 */ height: 56px; /* 高さ */ font-size: 1em; /* テキスト内の表示文字サイズ */ color: #000000; line-height: 1.2; /* 行の高さ */

    • ベストアンサー
    • CSS
  • セレクトボックスの操作

    <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="追加"> 例えば、上記のセレクトボックスの3を選択して送信ボタンを押したら、3以外の4つの数字の値を持ったセレクトボックス(select name="example2)を出現させたいのです。(example1を残したまま) 選択した数字以外の値を持ったセレクトボックスを出現させたいです。 <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="追加"> 上記のようになります。example2の1を選択し送信したら <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 上記の手順でセレクトボックスが3つに増えた場合のソースは次のような感じに <select name="example1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="1" value="取り消し"> <select name="example2"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit"name="2" value="取り消し"> <select name="example3"> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 取り消しを押した場合、そのセレクトボックスを削除し、一番新しいセレクトボックス(example3)に削除された値を追加したいです。 example2を取り消した場合、 <select name="example3"> <option value="1">1</option> <option value="2">2</option> <option value="4">4</option> <option value="5">5</option> </select> <input type="submit" name="3" value="追加"> 上記のようになります。 どのように記述すれば実現可能でしょうか? ご教示頂けますと幸いです。 宜しくお願いいたします。

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

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

専門家に質問してみよう