プロが教えるわが家の防犯対策術!

現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています
<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でも可)

選択するプログラム側の修正方法を教えて欲しいのですが。
宜しくお願い致します。

A 回答 (4件)

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>
--------------------

検証してませんが、どうでしょうか?

この回答への補足

フォーム側を
(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>

補足日時:2011/09/13 19:02
    • good
    • 0
この回答へのお礼

こんな手法もあったんですね。有難うございます。
ただ、
.php?date=201002&year=2010&month=02
となってしまいました。
&year=2010&month=02を渡さない方法を探し出せばできそうです。

http://blog.quall.net/program/225/を参考にして
なんとか解決いたしました。

有難う御座いました。

お礼日時:2011/09/13 18:24

> 初期値で当月をselectedにしているのですが、


> 変更しないでボタンをクリックすると、値が受け渡されませんでした。

そうですね。失礼しました。

初期値(デフォルト値)は最初からセットしておけば
大丈夫だと思います。
<input type="hidden" name="date" id="date" value="(最初にselectedしている値)" />

例)
<input type="hidden" name="date" id="date" value="201109" />

よろしくお願いします。
    • good
    • 0

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"])));
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/13 18:43

すみません。

1つ修正
<input type="hidden" name="date" value="" />

<input type="hidden" name="date" id="date" value="" />

でした。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/09/13 18:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!