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

このQ&Aのポイント
  • ネットで探した式を張り付ける位しかできない超初心者です。以下のような当日表示の日付のセレクトボックスを探してペーストしたのですが1や2を01、02と表示しません。
  • これをどうやって直せば01,02,03,04,05と0付きの表示のセレクトボックスに直せるでしょうか?
  • どうぞよろしくお願いいたします。
回答を見る
  • ベストアンサー

日付のセレクトボックスで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
  • 回答数1
  • ありがとう数2

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

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

spritfで整形してみてはどうでしょうか? <? list($year,$month,$day) = explode("/",date("Y/n/j", mktime())); print "<select name=\"ayear\">"; for( $i = 2010; $i <= 2020; $i++ ){ $selected=($i == $year)?" selected":""; print "<option value=\"{$i}\"{$selected}>{$i}</option>"; } print "</select>年"; print "<select name=\"amonth\">"; for ($i=1;$i<=12;$i++){ $selected=($i == $month)?" selected":""; print "<option value=\"{$i}\"{$selected}>".sprintf("%02d",$i)."</option>"; } print "</select>月"; print "<select name=\"aday\">"; for ($i=1;$i<=31;$i++){ $selected=($i == $day)?" selected":""; print "<option value=\"{$i}\"{$selected}>".sprintf("%02d",$i)."</option>"; } print "</select>日"; ?>

参考URL:
http://www.php.net/manual/ja/function.sprintf.php
tansansooda
質問者

お礼

できました! すばらしいです。 今sprintfをググりましたが sprintfは文字列を指定した形式にフォーマットしてくれる関数です。と書いて ありましたが読んでも私には使い方がさっぱり分かりませんです。 ほんとに有り難うございます。 これを元に勉強します。ありがとうございました。

関連するQ&A

  • 複数の SELECT タグを連動する

    複数の SELECT タグを連動するようにさせたいです。メインカテゴリを選択すると、サブカテゴリが出てくるというものです。 javaスクリプトの方は確認しました。 http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/selectexample.html ただ、これをCGI(perl)上で利用したいのですが、方法が分かりません。 CGIは以下のようになっています。 print "<SELECT name=\"cat\">\n"; print "<OPTION value=\"\">カテゴリを選択してください</OPTION>\n"; for ($cnt = 0 ; $cnt<= $#catlist ; $cnt++) { if($catlist[$cnt] eq $cat){ print "<option value=\"$catlist[$cnt]\" selected>$catlist[$cnt]</OPTION>\n"; }else{ print "<option value=\"$catlist[$cnt]\">$catlist[$cnt]</OPTION>\n"; }#if閉じ }#for閉じ print "</SELECT>\n"; 配列変数(という言い方であってますか?@catlist)は別ファイル(data.ini)に保存されています。 サブカテゴリも配列を利用できないでしょうか?(@sub1=(~);@sub2=(~);のような感じ) また、修正画面(selectedを付ける)での使い方も今一つ不明です。 現在は、 print "<SELECT name=\"cat\">\n"; print "<OPTION value=\"\">カテゴリを選択してください</OPTION>\n"; for ($cnt = 0 ; $cnt<= $#catlist ; $cnt++) { if($catlist[$cnt] eq $cat){ print "<option value=\"$catlist[$cnt]\" selected>$catlist[$cnt]</OPTION>\n"; }else{ print "<option value=\"$catlist[$cnt]\">$catlist[$cnt]</OPTION>\n"; }#if閉じ }#for閉じ print "</SELECT>\n"; このような状態ですが、方法があれば教えてください。

  • セレクト文

    下記のセレクト文に配列をセットしたいのですが、”onchange”を使った2段階?にするとエラーになってしまいます。 <html> <head> <body> <?php $selected[] = array(); unset($selected); $selected[$***[ "t" ][ "VALUE" = "SELECTED"; print("<select name=\"t\" onchange="if(t.value==1){s1.style.display='inline';s2.style.display='none'; }else{s1.style.display='none';s2.style.display='inline';}">") print("<option selected> print("<option value=1>1  print("<option value=2>2 print("<</select> $selected[] = array(); unset($selected); $selected[$***[ "s1" ][ "VALUE" ]] = "SELECTED"; print("<select name=\"s1\" style=display:none>") print("<option value=a>a") print("<option value=aa>aa") print("</select>") $selected[] = array(); unset($selected); $selected[$***[ "s2" ][ "VALUE" ]] = "SELECTED"; <select name=\"s2\" style=display:none>") <option value=b>b") <option value=bb>bb") print("</select>") ?> </body> </head> </html> よろしくお願いします。

    • 締切済み
    • PHP
  • コンボボックス生成の際の文字埋め

    print("<select name=\"emonth\">\r");  for( $i = 1; $i <=12; $i++ ){   if($i == $month ){    print("<option value=$i selectd>$i</option>\r");   }else{    print("<option value=$i>$i</option>\r");    }  } print("</select>"); 上記のようなソースの場合$iの頭を0で埋めて2桁にする場合どのような方法がありますでしょうか? LPAD関数を使ったのですがうまくいきませんでした。 例)print("<option value=lpad($i,2,'0')>$i</option>\r"); よろしくご教授願います。

    • ベストアンサー
    • PHP
  • 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
  • 日付プルダウン選択フォーム

    専門の方が退社されて、サブ業務で多少HPの情報更新や修正をしていた私にお鉢が回ってきてしまい困っており、お教えいただけるとありがたいです。 現在のフォームですと、2ヶ月先までフォームで選択来るようになっており、今なら今年の12月・来年の1月・来年の2月が選択可能になっているのですが これを4ヶ月先まで選択出来るようにしたい場合どのようにしたらいいのでしょうか? 月セレクト>11月より後の処理>optgroup label forあたりの記述がイマイチ理解出来てないです。 //西暦取得 $seireki = date("Y"); //来年を取得 $rainen = date("Y",strtotime("+1 year")); //今月を取得-0をつけない⇒付ける時は"m" $tsuki = date("n"); //翌月を取得 $yokutsuki = date('n', strtotime(date('Y-m-1').' +1 month')); //再来月を取得 $saraigetsu = date('n', strtotime(date('Y-m-1').' +2 month')); //今日を取得-0を付けない⇒着ける時は"d" $hi = date("j"); //指定した月の日数を取得 $tsukihi = date("t"); //翌月の日数を取得 $yokutsukihi = date("t",mktime(0, 0, 0, date("m")+1, 1, date("Y"))); //再来月の日数を取得 $saraigetsuhi = date("t",mktime(0, 0, 0, date("m")+2, 1, date("Y"))); //print"".$seireki.$tsuki.$hi."今月の日数".$tsukihi."翌月".$yokutsuki."翌月の日数".$yokutsukihi; //11月になったら来年をセレクト可能にする if($tsuki >= "11"){ $tougetsu = "<select id=\"SEL1\" name=\"year\">\r\n<option value=\"\">---</option>\r\n<option value=\"$seireki\">{$seireki}年</option>\r\n<option value=\"$rainen\">{$rainen}年</option></select>\r\n"; }else{ $tougetsu = "<select id=\"SEL1\" name=\"year\">\r\n<option value=\"\">---</option>\r\n<option value=\"$seireki\">{$seireki}年</option>\r\n</select>\r\n"; } //月のセレクト $tsuki1 = date("n"); if($tsuki1 <= "10" ){ //10月より前の月の処理 $tsuki_select = "<select id=\"SEL2\" name=\"month\">\r\n<option value=\"\">---</option>\r\n<optgroup label=\"".$seireki."\">"; for($k = $tsuki1; $k <= $tsuki1 + 2; $k++){ $tsuki_select .= "<option value=\"".$k."\">".$k."月</option>\r\n"; } $tsuki_select .="</optgroup>\r\n</select>"; }else{ //11月より後の処理 $tsuki2 = $yokutsuki; $tsuki3 = $saraigetsu; $tsuki_select = "<select id=\"SEL2\" name=\"month\">\r\n<option value=\"\">---</option>\r\n<optgroup label=\"".$seireki."\">"; for($k = $tsuki1; $k < $tsuki1 + $tsuki2; $k++){ $tsuki_select .= "<option value=\"".$k."\">".$k."月</option>\r\n"; } $tsuki_select .="</optgroup> <optgroup label=\"".$rainen."\">"; for($t = 1; $t <= $tsuki3; $t++){ $tsuki_select .= "<option value=\"".$t."\">".$t."月</option>\r\n"; } $tsuki_select .="</optgroup></select>\r\n"; } //日付のセレクト(当月) $day_select ="<select id=\"SEL3\" name=\"day\"> <option value=\"\">---</option> <optgroup label=\"".$tsuki."\">\r\n"; for($i = $hi; $i <= $tsukihi; $i++){ if(isset($hi) && $hi == $i){ $day_select .="<option value=\"".$i."\" selected=\"selected\">".$i."日</option>\r\n"; }else{ $day_select .="<option value=\"".$i."\">".$i."日</option>\r\n"; } } $day_select .="</optgroup> <optgroup label=\"".$yokutsuki."\">\r\n"; for($j = 1; $j <= $yokutsukihi; $j++){//翌月分 $day_select .="<option value=\"".$j."\">".$j."日</option>\r\n"; } $day_select .="</optgroup> <optgroup label=\"".$saraigetsu."\">\r\n"; for($l = 1; $l <= $saraigetsuhi; $l++){//翌々月分 $day_select .="<option value=\"".$l."\">".$l."日</option>\r\n"; } $day_select .="</optgroup></select>\r\n"; ----表示部---- <td>  <?= $tougetsu ?> <?= $tsuki_select ?> <?= $day_select ?> <script type="text/javascript"> ConnectedSelect(['SEL1','SEL2','SEL3']); </script> </td>

  • 生年月日・年月日のフォームが表示されない

    お世話になります。 下記のタグでは、表示されません。 サーバーの問題なのか、タグの問題かわかりませんので、 まず、タグを見て頂けませんか? よろしくお願いします。 ------------------------------------------------ <td width="30%">生年月日</td> <td width="70%"><script type="text/javascript"> document.write("<select name=\\"296643_year\\">"); for(i=1900;i<2010;i++){ if(i==1950){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } }document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296643_month\\">"); for(i=1;i<13;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296643_day\\">"); for(i=1;i<32;i++){ if(i==1){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }}document.write("</select>"); document.write(" 日 "); </script> <br><font size="1"></font></td> </tr> <tr> ---------------------------------------------------------------- <td width="30%">電話の場合の日時</td> <td width="70%"> <script type="text/javascript"> document.write("<select name=\\"296652_year\\">"); for(i=2009;i<=2010;i++){ if(i==2009){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 年 "); document.write("<select name=\\"296652_month\\">"); for(i=1;i<13;i++){ if(i==4){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 月 "); document.write("<select name=\\"296652_day\\">"); for(i=1;i<32;i++){ if(i==23){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 日 "); document.write("<select name=\\"296652_hour\\">"); for(i=0;i<24;i++){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); } } document.write("</select>"); document.write(" 時 "); document.write("<select name=\\"296652_minute\\">"); for(i=0;i<60;i=i+5){ if(i==0){ document.write("<option value="+i+" selected>"+i+"</option>"); }else{ document.write("<option value="+i+">"+i+"</option>"); }} document.write("</select>"); document.write(" 分 "); </script><br><font size="1"></font></td> </tr> <tr>

    • ベストアンサー
    • HTML
  • 日記のスクリプトで日付の移動メニューを作りたい

    日記スクリプトを書いているのですが 何年何月の日記のページに移動するのに セレクトメニューで移動するようにしたいのですが 以下のスクリプトだとどうしても日付が表示されません どこが間違っているのでしょうか print"<select name=>\n"; foreach(0 .. $year) { if($year eq "$w_year[$_]"){print"<option value=\"$w_year[$_]/$month[$_]/1\" selected>$w_year[$_]/$month[$_]\n";} else{print"<option value=\"$w_year[$_]/$month[$_]/1\">$w_year[$_]/$month[$_]\n";} } print"</select>\n";

    • 締切済み
    • CGI
  • 2つのセレクトボックスを連動させたい

    2つのセレクトボックスを連動させて、 片方の選択を変更すると、もう一方の選択できる範囲が限定されるようにしたい。 下記のようなソースでセレクトボックスを2つ表示させています。 jQueryを使用しています。 それぞれ「開始年」「終了年」という意味合いで、 取得する値から、「年の範囲」を決定するものです。「option」の「value」には、西暦の4桁の数字が入るようにしています。 そこで、「開始年」選択を変更させたときに、「終了年」のセレクトが開始年よりも古い年を選択できないように連動させたいのですが、何かいい方法はないでしょうか。 ※「送信」ボタンをクリックした際に、警告文を表示するのではなく、 2つのセレクトを連動される形で実現させたいと考えております。 ↓↓【記述コード】---------------------------------------------- 開始年:<select name="year_start" id="feas_1_1"></select> <script type="text/javascript" src="jquery-1.11.1.js"></script> <script type="text/javascript"> //現在の年数オブジェクトを4桁で生成 var time = new Date(); var year = time.getFullYear(); var init_year = 1955; //1970年まで表示 for (var i = init_year; i <= year; i++) { if(i < 1989){ no = 1925; era = '昭和 '; }else{ no = 1988; era = '平成 '; } var s = i - no; if(s == 1){ s = '元'; } $('#feas_1_1').append('<option value="' + i + '">' + era + s +'年( '+ i+ '年)</option>'); } </script> 終了年:<select name="year_end" id="feas_1_2"></select> <script type="text/javascript"> //現在の年数オブジェクトを4桁で生成 var time = new Date(); var year = time.getFullYear(); var init_year = 1955; //1970年まで表示 for (var i = year; i >= init_year; i--) { if(i < 1989){ no = 1925; era = '昭和 '; }else{ no = 1988; era = '平成 '; } var s = i - no; if(s == 1){ s = '元'; } $('#feas_1_2').append('<option value="' + i + '">' + era + s +'年( '+ i + '年)</option>'); } </script>

  • セレクトボックスの初期選択をクッキーで固定したい。

    お世話になります。 php とmysql 初心者です。 php でmysqlから以下のようなセレクトボックスを作りました。 このセレクトボックスの初期値を(selected)を 見る人によって$cookie値によって固定したいのですが いろいろググったりしたのですが、 見当もつかず理屈から全くわかりません。 phpだけでできるのでしょうか? javascript等必要でしたら できれば具体的に教えて頂ければ大変助かります。 どうかご教授の程よろしくお願い致します。 <? $sql = "SELECT * FROM table ORDER BY index ASC"; $res = mysql_query( $sql ); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ if($cookie==$row['index']){ $options.="<option value='{$row['index']}'selected>{$row['name']}</option>\n";} else { $options.="<option value='{$row['index']}'>{$row['name']}</option>\n";} } $select="<select name='name'><option value=''>選択</option>\n{$options}</select>\n"; print $select; ?>

    • 締切済み
    • PHP
  • 修正画面の「select」で指定のものに「selected」を付ける

    CGIを改造中です。 今、修正フォーム部分を色々と触っているのですが、ちょっと知恵を貸してください。 <SELECT>でドロップダウンリストを使っています。 このオプションの数が90くらいあります。 オプションは <SELECT name="genre"> <OPTION value="11">項目1</OPTION> ~~ と言う形です。 で、修正画面なので、$genreに入っているものに「selected」をつける必要があります。 私の少ない知識だとすべてのオプションに対して、例えば11の場合… if($genre == 11){ print "<OPTION value="11" selected>項目1</OPTION>\n"; }else{ print "<OPTION value="11">項目1</OPTION>\n"; } とする方法しか浮かびません。 しかし、これを90個分も並べるのは面倒ですし、ソースも長くなってしまいます。 どうにかしてこれを簡素化することは出来ないでしょうか? 方法があればお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう