使用月份和年份填充下拉表单

Pet*_*lor 1 html php date strtotime mktime

我试图用HTML和PHP创建两个下拉菜单.第一个是自动提交,它将一个月发送到会话变量:

<form action="" method="post">
      <select name="month" onchange="this.form.submit()">
        <option value="">-- Select Month --</option>
        <?php $month = date('n'); // current month
         for ($x = 0; $x < 12; $x++) { ?>
          <option value="<?php echo date('m', mktime(0,0,0,$month + $x,1)); ?>" 
          <?php echo date('m', mktime(0,0,0,$month + $x,1)) == $_SESSION['month'] ? "selected='selected'":""; ?> >
          <?php echo date('F Y', mktime(0,0,0,$month + $x,1)); ?>
         <?php } ?>
      </select>
    </form>
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是我需要第二次下拉日期名称和号码:

<form action="" method="post">
      <select name="day" onchange="this.form.submit()">
        <option value="">-- Select Day --</option>
        <?php for ($i = $current_day; $i < 31; $i++) { 
        $tmp_date = $_SESSION['year']."/".$_SESSION['month']."/".$i; 
              $weekday = date('D', strtotime($tmp_date));  { ?>
        <option value="<?php echo $i; ?>" <?php echo $i == $_SESSION['day'] ? "selected='selected'":""; ?> >
        <?php echo $weekday." ".$i; ?>
     <?php  } ?>  
     <?php } ?>
        </option>
        <?php } ?>
      </select>
    </form>
Run Code Online (Sandbox Code Playgroud)

这使用临时日期和会话变量作为我在之前设置的'2014'.我需要删除会话年变量并获得第一个下拉菜单以了解所选月份的年份,然后将其传递给临时日期,以便在下一年(2015年)正确填充日期名称和数字(如果您选择)一月起.目前,它仅显示当前年份(2014年)的日期名称和数字.

Pet*_*lor 5

<?php
if(isset($_POST)) {
    $date = explode('-', $_POST['month']);
    $year = $date[0];
    $month = $date[1];
    echo "Year: ".$year." Month: ".$month;
}
?>

<form action="" method="post">
<select name="month" onchange="this.form.submit()">
<?php
  for ($i = 0; $i <= 12; ++$i) {
    $time = strtotime(sprintf('+%d months', $i));
    $value = date('Y-m', $time);
    $label = date('F Y', $time);
    printf('<option value="%s">%s</option>', $value, $label);
  }
  ?>
</select>
Run Code Online (Sandbox Code Playgroud)

这给了我作为单独值的年和月.