- ベストアンサー
プルダウンからの日付取得処理
現在、PHP+SQLiteでWEBページを作成しております。 (初心者です。) フォームに日付をプルダウンで選択出来るように、 $utime = time()+$jisa*3600; $today = getdate($utime); //年のセレクトボックス(±2年) echo "<select name=year>\n"; for ($y=$today[year]+2; $y>=$today[year]-2; $y--) { $sel = ($y == $today[year]) ? " selected" : ""; echo "<option value=\"$y\"$sel>$y</option>\n"; } echo "</select>/\n"; //月のセレクトボックス(12-1月) echo "<select name=mon>\n"; for ($m=12; $m>=1; $m--) { $sel = ($m == $today[mon]) ? " selected" : ""; echo "<option value=\"$m\"$sel>$m</option>\n"; } echo "</select>/\n"; //日のセレクトボックス(31-1日) echo "<select name=day>\n"; for ($d=31; $d>=1; $d--) { $sel = ($d == $today[mday]) ? " selected" : ""; echo "<option value=\"$d\"$sel>$d</option>\n"; } echo "</select>\n"; というコードを記述しております(これはネットを参考にしました)。 これでプルダウンの表示自体は出来たのですが、実際にここから値を取得するにはどうすれば良いかが分かりません・・・。 ご教授お願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>、実際にここから値を取得するにはどうすれば良いかが分かりません・・・。 formでサブミットすればいいのでは? $_REQUEST["year"]に年のデータがはいってます。あとはmon,dayも同様
その他の回答 (4)
- koke29
- ベストアンサー率58% (114/196)
>date関数はあくまで「現在」を返すんですよね? これがちょっと気になったので横から失礼します data関数は date (フォーマット, 日時); で任意の形式で日付の表示を行うので、 =現在ではありません 日時の部分に任意のタイムスタンプを入れれば、そのタイムスタンプの 日付が表示されます(言い回しが正しいかちょっと自信無いのですが…) date("Y/m/d",time()); なら現在日を 0000/00/00 形式で表示 date("Y/m/d",time()-86400); なら昨日の日付を表示 といった感じです
お礼
ご回答ありがとうございますm(__)m 結果としては、思った通りに動作するようになりました。 方法は、テーブルには文字列として「20090609」が入っている状態。 それを取得して「substr関数」で年・月・日に分割。 それぞれの値を「$today」の「year」「mon」「mday」に代入。 これで質問欄に記載したプルダウン生成処理にてテーブルから取得した日付での表示が出来ました。 ご回答くださった皆さん、こちらにてお礼をまとめさせていただきます。本当にありがとうございましたm(__)m
>逆に、「20090609」という文字列をテーブルから取得した後、 フォームの日付プルダウンへセットする、なんて事は出来るのでしょうか? (フォームを作り直すしか無い?) SQLiteを使った事がないので何ともいえませんが・・・ 調べてみたところSQLiteにはカラムの型に日付型がないようですね。 まず、日付だと分かるように値を挿入し →http://study.rakuto.net/php/sqlitetips/date/ フォーマットを使い日付として取得するみたいですね・・・ →http://study.rakuto.net/php/sqlitetips/datefunc/ strftime関数で「年」「月」「日」を取得してみてはどうでしょうか? 間違ってたらお役に立てずにすみません。
ゼロ埋めですが、取得した値を $value = sprintf( "%02d", $value); でゼロ埋め2桁にすることができます。
お礼
ご回答ありがとうございます。 まさにこの方法でゼロパディングしました。 ありがとうございますm(__)m ちなみに、一つ前のお礼の欄に記入した内容もご存知でしたらご教授していただけませんでしょうか? よろしくお願いいたします。
>こういった日付の処理の仕方ってどこかに詳しく記載されていたりしないですかね・・・なんて人や物に頼ってちゃダメだとは思いますが・・・・orz >年月日をテーブルの1カラムに入れたいのですが、「200969」をゼロ埋めして「20090609」のようにするのはガリガリソースでいじるしか無いでしょうか? date()関数のフォーマット文字「m」や「d」を利用されてみてはどうでしょうか? 詳しくは、こちらのサイトをご覧ください。 → http://php.xenophy.com/date-time/index.html
お礼
ご回答ありがとうございます。 date関数はあくまで「現在」を返すんですよね? 自分で色々調べて、「sprintf」でゼロパディングする方法で 出来ました。 ありがとうございましたm(__)m 逆に、「20090609」という文字列をテーブルから取得した後、 フォームの日付プルダウンへセットする、なんて事は出来るのでしょうか? (フォームを作り直すしか無い?)
お礼
ご回答ありがとうございました! それぞれ値の取得が出来ましたm(__)m こういった日付の処理の仕方ってどこかに詳しく記載されていたりしないですかね・・・なんて人や物に頼ってちゃダメだとは思いますが・・・・orz 年月日をテーブルの1カラムに入れたいのですが、「200969」をゼロ埋めして「20090609」のようにするのはガリガリソースでいじるしか無いでしょうか? 回答欄にまた質問をしてしまって申し訳ないですが、もし可能でしたら教えてくださいm(__)m