複数のセレクトボックスを1つにまとめて受け渡す方法は?

このQ&Aのポイント
  • 複数のセレクトボックスを1つにまとめて受け渡す方法について教えてください。
  • 現在、年と月のセレクトボックスがあり、それぞれの値を受け取るためのコードが存在します。しかし、これを1つの値として受け取る方法を知りたいです。
  • 具体的には、dateとして年と月を1つにまとめて受け取る方法を教えていただきたいです。
回答を見る
  • ベストアンサー

複数のセレクトボックスを1つにまとめて受け渡すには

現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています <form action="./search.php" method="GET">  <select name="year">   <option value="2010">2010年</option>   <option value="2011">2011年</option>  </select>  <select name="month">   <option value="1">1月</option>   <option value="2">2月</option>   <option value="3">3月</option>      ・   <option value="12">12月</option>  </select>  <input type="submit" value="検索"> </form> 受け取り側 http://www.###.jp/search.php?year=2011&month=11 となっています。 これを dateに一まとめにして受け取りたいですが http://www.###.jp/search.php?date=201111(2011-11でも可) 選択するプログラム側の修正方法を教えて欲しいのですが。 宜しくお願い致します。

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

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

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

javascript で書くのがいいと思います。 -------------------- <script type="text/javascript"> <!-- function onMyChange(){   var year = document.getElementById('year').value;   var month = document.getElementById('month').value;   document.getElementById('date').value = year + month; } //--> </script> -------------------- フォームを以下のように変更 -------------------- <form action="./search.php" method="GET"> <input type="hidden" name="date" value="" /> <select name="year" id="year" onchange="onMyChange();"> : : </select> <select name="month" id="month" onchange="onMyChange();"> : : </select> -------------------- 検証してませんが、どうでしょうか?

ryo_hiro
質問者

お礼

こんな手法もあったんですね。有難うございます。 ただ、 .php?date=201002&year=2010&month=02 となってしまいました。 &year=2010&month=02を渡さない方法を探し出せばできそうです。 http://blog.quall.net/program/225/を参考にして なんとか解決いたしました。 有難う御座いました。

ryo_hiro
質問者

補足

フォーム側を (1)name="" (2)<input type="hidden" name="date" value="">  のvalueに現在年月をセット として理想の動きになりました。 <script type="text/javascript"> <!-- function onMyChange(){   var year = document.getElementById('year').value;   var month = document.getElementById('month').value;   document.getElementById('date').value = year + month; } //--> </script> フォーム側 -------------------- <form action="./search.php" method="GET"> <input type="hidden" name="date" value="phpで現在の年月をセット" /> <select name="" id="year" onchange="onMyChange();"> : : </select> <select name="" id="month" onchange="onMyChange();"> : : </select>

その他の回答 (3)

回答No.4

> 初期値で当月をselectedにしているのですが、 > 変更しないでボタンをクリックすると、値が受け渡されませんでした。 そうですね。失礼しました。 初期値(デフォルト値)は最初からセットしておけば 大丈夫だと思います。 <input type="hidden" name="date" id="date" value="(最初にselectedしている値)" /> 例) <input type="hidden" name="date" id="date" value="201109" /> よろしくお願いします。

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

PHPでの質問ですよね? 一回別ファイルで受けてとばしてやれば? <form action="./get.php" method="GET"> <select name="year"> <option value="2010">2010年</option> <option value="2011">2011年</option> </select> <select name="month"> <option value="1">1月</option> <option value="2">2月</option> <option value="12">12月</option> </select> <input type="submit" value="検索"> </form> としておいてget.phpの内容が <?PHP header("Location:search.php?date=".urlencode($_GET["year"].sprintf("%02d",$_GET["month"]))); ?>

ryo_hiro
質問者

お礼

こんな手法もあったんですね。有難うございます。 勉強になります。

回答No.2

すみません。1つ修正 <input type="hidden" name="date" value="" /> ↓ <input type="hidden" name="date" id="date" value="" /> でした。

ryo_hiro
質問者

お礼

度々すいません。 あと1点 初期値で当月をselectedにしているのですが、 変更しないでボタンをクリックすると、値が受け渡されませんでした。

関連するQ&A

  • PHPで日付の範囲検索

    PHPを使って日付の範囲検索を実装しています。日付をセレクトフォームで選択し、該当する日時をSELECT文で記述するという流れです。イメージは以下のような感じですが、大体合っていますか? <? php if (!empty(filter_input(INPUT_POST, 'day'))) { $day = filter_input(INPUT_POST, 'day'); ・・・・ SELECT 文   ・・・・ ?> <html> <div class="search"> <form method="post"> <select name="year"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> </select> <select name="month"> <?php for ($i=1; $i <= 12; $i++) { $month .= '<option value="'.$i.'">'.$i.'月</option>'; } ?> </select> <select name="day"> <?php for ($i=1; $i <= 31; $i++) { $day .= '<option value="'.$i.'">'.$i.'日</option>'; } ?> </select> <input type="hidden" name="search" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> <input type="submit" value="検索"> </form> </div> </html>

    • ベストアンサー
    • PHP
  • リストボックスに動的な初期設定値(selected)を与えたい(質問長文)

    以下のようなリストボックスで、今日の日付データから「(1年前の)year」と「(今月の)month」の初期設定値を与えようと思うのですが、スマートな方法が思いつきません。 どなたかよい方法を教えてください・・・ <form name="test"> <select name="year"> <option>1997 ・・・(中略) <option>2005</select> 年 <select name="month"> <option value="01">1 ・・・(中略) <option value="12">12</select> 月 </form> <script language="JavaScript"> <!-- function initial(){ 【ここにどのように書くか】 } initial(); //--> </script>

  • 日付のセレクトボックスで0付きの日付にしたい

    ネットで探した式を張り付ける位しかできない超初心者です。 以下のような当日表示の日付のセレクトボックス を探してペーストしたのですが1や2を01、02と表示しません。 これをどうやって直せば01,02,03,04,05と0付きの表示のセレクトボックスに 直せるでしょうか? どうぞよろしくお願いいたします。 <? $time = time(); $year = date("Y", $time); $month = date("n", $time); $day = date("j", $time); print("<select name=\"ayear\">"); //年は修正してください for( $i = 2010; $i <= 2020; $i++ ){ if( $i == $year ){ print("<option value=\"$i\" selected>$i</option>"); }else{ print("<option value=\"$i\">$i</option>"); } } print("</select>年"); print("<select name=\"amonth\">"); for( $j = 1; $j <= 12; $j++ ){ if( $j == $month ){ print("<option value=\"$j\" selected>$j</option>"); }else{ print("<option value=\"$j\">$j</option>"); } } print("</select>月"); print("<select name=\"aday\">"); for( $k = 1; $k <=31 ; $k++ ){ if( $k == $day ){ print("<option value=\"$k\" selected>$k</option>"); }else{ print("<option value=\"$k\">$k</option>"); } } print("</select>日"); ?>

    • ベストアンサー
    • PHP
  • 今日の日付を自動的にセレクトしたいのですが・・・。

    うまくできません。 どなたか助けていただけないでしょうか? よろしくおねがいします。 今のソースはこんな状態です。 onChange="setDate(this.form);"は4月の時に30日までとかにつかっています。 <!--最初に今日の日付を選択したい--> var date=new Date(); var year = date.getYear(); var year= (year< 2000) ? year+1900 : year; var mon=date.getMonth(); var day=date.getDate(); alert(mon); function setNow(form){ for(var i = 0;i<document.nanngatu.nanngatu.options.length;i++){ if(document.nanngatu.nanngatu.options[i].text==mon){ document.nanngatu.nanngatu.options.selectedIndex=i; break; } } } --間は省略-- <onLoad="setNow(this.form)" > <form name="nanngatu"> <select name="nanngatu" onChange="setDate(this.form);" > <option value="32">1</option> <option value="30">2</option> <option value="32">3</option> <option value="31">4</option> <option value="32">5</option> <option value="31">6</option> <option value="32">7</option> <option value="31">8</option> <option value="32">9</option> <option value="31">10</option> <option value="32">11</option> <option value="31">12</option> </select>月

  • 年月日のプルダウンメニューで教えてください。

    php初心者です。 セレクトメニューで悩んでいます。 以下のようなフォームを作っています。 プルダウンメニューで2007年1月1日を選んだ時 結果を20070101にし、SELECTDATEのaaaに持たせたいのですがどうすればいいのかわかりません。 どなたか教えてください。 <form name="etc" action="etc"> <?php echo "<select name=\"YEAR\">"; for ($i = 0; $i < 2; $i++) { echo "<option>".date("Y", strtotime("+$i year")); } echo "</select>年"; echo "<select name=\"MONTH\">"; (中略) echo "<select name=\"DAY\">"; (中略) ?> <input type="hidden" name="SELECTDATE" value="aaa" /> </form>

    • 締切済み
    • PHP
  • セレクトボックスの内容を次のページで受け取る方法

    <form action="./check.asp" method="POST"> <table> <tr> <td> <select name="year"> <option value="2006" >2006</option> <option value="2007" >2007</option> <option value="2008" >2008</option> </select> </td> </tr> <tr> <td align="center"><input type="submit" value="確認する"></td> </tr> </table> </form> として 次のページで YEAR =Trim(request("year")) Response.Write YEAR で受け取り表示しようとしていますが取れません。なぜですか?教えてください

  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • セレクトボックスで指定した任意のCGIにPOSTしたい

    フォームでリクエストを送信する際、セレクトボックスで指定した任意のCGIにPOSTしたいのです JavaScriptで実現したいのですが...教えてくださいm(__)m 下記はフォームの中身です。 <form action="" method="post"> <input type="text" name="key_word"> <select name="S1"> <option selected value="error">CATEGORY <option value="search_1.cgi">SELECT_1 <option value="search_2.cgi">SELECT_2</option> </select> <input type="hidden" value="kw_search" name="mode"> <input type="submit" value="検索"></td> </form>

  • セレクトボックスの連動

    セレクトボックスAを切り替えると、他のセレクトボックスがAと同じになるようなものを作りたいのですが、うまくいきません。 ソースは以下の通りです。 function ChangeSelect() { var index = formA.selectA.selectedIndex; for (i=1,i<formB.selectCnt.value,i++) { if (i == index) { FormB.selectB1.options[index].value ); } } } <form name="formA"> <select name="selectA" onchange="javascript:ChangeSelect()"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> <form name="formB> <input type="hidden" name="selectCnt" value=***> <select name="selectB1"> <option value="りんご">りんご <option value="みかん">みかん <option value="いちご">いちご </select> </form> 存在するセレクトボックスは全て同じ値が入っています。 formAにはセレクトボックスは1つですが、formBにあるセレクトボックスは0~複数と場合によって異なります。 formBにあるセレクトボックスはselectB1、selectB2、selectB3という感じに最後の数字のみが異なるnameがつくようにしています。 <input type="hidden" name="selectCnt" value=***>のvalueには、ASPで数えたセレクトボックスの数を入れています(セレクトボックスが10個あれば10と入ります) 数が決まっていればFormB.selectB1.options[index].valueを数の分だけ増やせばいいのですが、0の時もあれば10の時もある、という場合にはどういう風に書けばいいのかわかりません。 どのように記述すれば良いのでしょうか。アドバイスお願いします><

  • javascriptでセレクトボックスの"selected"を動的につ

    javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。 現在、以下のようなフォームを作成しました。 <select name='year'> <option value='2010'>2010</option> <option value='2011'>2011</option> </select>年 <select name='month'> <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> <option value='6'>6</option> <option value='7'>7</option> <option value='8'>8</option> <option value='9'>9</option> <option value='10'>10</option> <option value='11'>11</option> <option value='12'>12</option> </select>月 <select name='day'> <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> <option value='6'>6</option> <option value='7'>7</option> <option value='8'>8</option> <option value='9'>9</option> <option value='10'>10</option> <option value='11'>11</option> <option value='12'>12</option> <option value='13'>13</option> <option value='14'>14</option> <option value='15'>15</option> <option value='16'>16</option> <option value='17'>17</option> <option value='18'>18</option> <option value='19'>19</option> <option value='20'>20</option> <option value='21'>21</option> <option value='22'>22</option> <option value='23'>23</option> <option value='24'>24</option> <option value='25'>25</option> <option value='26'>26</option> <option value='27'>27</option> <option value='28'>28</option> <option value='29'>29</option> <option value='30'>30</option> <option value='31'>31</option> </select>日 このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか? よろしくお願いします。

専門家に質問してみよう