dポイントプレゼントキャンペーン実施中!

MySQLに格納したデータから年、月、日を抽出したドロップダウンリストを作成したいのですが。
それぞれ、年、月、日とドロップダウンリストを三つ横に並べて表示したいと考えています。

テーブル名:game
issue(VARCHAR型)|datedating(DATE型)
○|2010-10-05
●|2011-06-07
△|2012-11-03

今現在は下記のコードで年だけを抽出したドロップリストやっています。
自分で考えてやってみたらまぐれで上手く抽出できたコードです。

<select name="year" style="width:85px;">
<option value="">-</option>
<?php
$sql = 'SELECT * FROM game WHERE issue NOT LIKE "" ORDER BY datedating';
$year_list_now=0;
foreach ($dbh->query($sql) as $row) {
$year_list=date('Y',strtotime($row['datedating']));
if($year_list_now < $year_list){
$year_list_now=$year_list;
( $_GET["year"] == $year_list_now ) ? $val = "selected" : $val = "" ;
print '<option value="'.$year_list_now.'" '.$val.'>'.$year_list_now.'年</option>';
}
}
?>
</select>


下記のコードは選択された値(年)を引き継ぐためのコードです。

>( $_GET["year"] == $year_list_now ) ? $val = "selected" : $val = "" ;

同じコードで月、日もいけるかなと思ったのですが、なぜか飛び飛びでしたか作成できませんでした。明らかにデータに格納されている月、日も抜けています。
月、日のドロップダウンリストは下記コードの「Y」の箇所を「m」や「d」にしました。

> $year_list=date('Y',strtotime($row['datedating']));

検索して出てきたこちらのコードがシンプルで良いと思いやってみたのですが、エラーになってしまいました。「`」がよく分かりません。
http://oshiete.goo.ne.jp/qa/2828622.html

どのようにすれば年、月、日のドロップダウンリストを作成できるでしょうか?

ご存知の方いらっしゃいましたらご教示ください。
よろしくお願いします。

A 回答 (3件)

>なのでこの方法だとデータにない月、日のみ選択され検索される可能性もあります。



なるほど・・・
そういうことであれば、ajaxをつかって、年、月、日のどれかが選ばれた時点で
裏で問い合わせをして、ヒット件数を表示するというのがベターだと思います
ajaxについては少し学習が必要ですが、慣れればさほど苦にはならないはずです
    • good
    • 0
この回答へのお礼

yambejpさん

回答ありがとうございます。

試行錯誤していたらMONTH(datedating)で無事出来ました。

ありがとうございました。

お礼日時:2014/07/01 23:22

>年×月×日の組み合わせ9パターン



27パターンですね、失礼しました
    • good
    • 0

いまいち何がしたいのか見えてきません。



仮に
2010-10-05
2011-06-07
2012-11-03

のデータから、年,月,日でドロップダウンを作ったとして
年が2010、2011、2012
月が06、10、11
日が03、05、07

になります
これでは年×月×日の組み合わせ9パターンのうち合致するのは3パターンしかなく
しかもとびとびの月日が表示されあまり意味がないリストではありませんか?

数字入力なしに、年月日をいれさせるだけであれば
年だけ抽出して、月は1~12、日は1~31を選ばせるので十分です。
(もちろん小の月の末日は変ですがリストとはそういうもの)

この回答への補足

yambejpさん

回答ありがとうございます。

>これでは年×月×日の組み合わせ27パターンのうち合致するのは3パターンしかなく

仰る通りなのですが、年月日3つ全てリストから選ぶのを想定しているというより、年月日を「2009年」、「06月」、「05日」など単体でリストから選び検索するのを想定しています。
例えば年と日は選択せず「06月」だけ選択したら各年の6月のレコードのみが抽出される。
もちろん年月日全て選ぶこともあるでしょうが。

>年だけ抽出して、月は1~12、日は1~31を選ばせるので十分です。

なのでこの方法だとデータにない月、日のみ選択され検索される可能性もあります。
結果はもちろん何も抽出できないですが。こういう結果を出来るだけ避けたいです。
ただご指摘の通り、年月日三つ全て選ばれたら抽出されないことが多くありそうですが。

データは過去15年分で全部で1000レコード以上あります。月日だけでいうと365日中抜けているのは30日もないと思うので問題ないかと思ったのですが。

年月日だけ個別に抽出してドロップダウンリストを作成するのは難しいでしょうか?
よろしくお願いします。

補足日時:2014/07/01 22:54
    • good
    • 0

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