根据URL查询设置选择列表默认值

时间:2016-07-04 17:21:29

标签: php html

我有以下内容,它为我提供了一个“跳转”菜单,可以在当前网址中添加查询,例如?date = 2016-07

<?php
    $date = explode('-', $_GET['date']);
    $year = $date[0];
    $month = $date[1];
?>

<form>
<select name="date" onchange="this.form.submit()">
<?php
  for ($i = 0; $i <= 18; ++$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>
</form>

页面跳转后,我想将新日期显示为默认值。我认为你通过给选择列表赋予“value”属性来做到这一点,但是没有用。再进一步阅读,您需要将“selected”添加到其中一个选项中。

如果匹配URL中的日期查询,如何将“selected”添加到其中一个选项?

2 个答案:

答案 0 :(得分:1)

$selected = ($value == $_GET['date']) ?  'selected' : '';
printf('<option value="%s" %s>%s</option>', $value, $selected, $label);

答案 1 :(得分:1)

<?php
    $date = explode('-', $_GET['date']);
    $year = $date[0];
    $month = $date[1];
?>

<form>
<select name="date" onchange="this.form.submit()">
<?php
  for ($i = 0; $i <= 18; ++$i) {
    $time = strtotime(sprintf('+%d months', $i));
    $value = date('Y-m', $time);
    $label = date('F Y', $time);
    if(strcmp($value,$_GET['date']) == 0)
       //If 0, $value and $_GET['date'] are the same: The option is selected
       printf('<option value="%s" selected>%s</option>', $value, $label);
    else
       printf('<option value="%s">%s</option>', $value, $label);
  }
  ?>
</select>
</form>