在dinamically书面选项上写下所选属性

时间:2017-08-16 20:24:55

标签: php

两个select代码 - monthsyears

<select class='sx' id ='sxa'>
<?php
$months = array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC');
for($x = 0; $x < count($months); $x++) {
    $i = sprintf('%02d', $x+1);
    echo "<option value=" . $i . ">" . $months[$x] . "</option>\n";
}
?>
</select>

<select class='sx' id ='sxb'>
<?php
$current = date('Y');
for ($x = 2016; $x <= $current; $x++) {echo "<option>$x</option>";}
?>
</select>

有没有办法在当前月份和年份插入属性selected

多年来,这始终是最后一种选择,而在几个月内它可以在任何指数上。

2 个答案:

答案 0 :(得分:1)

您可以检查当前月份是否等于loop index + 1

$currentMonth = date('n');

然后在你的循环中:

<?php for($x=0; $x<count($months); $x++): ?>
    <?php $i = sprintf('%02d', $x + 1); ?>
    <option value="<?php echo $i; ?>"<?php if($x + 1 == $currentMonth) echo ' selected'; ?>>
        <?php echo $months[$x]; ?>
    </option>
<?php endfor; ?>

或者如果你想以自己的方式回应它:

<?php
    for($x=0; $x<count($months); $x++){
        $i = sprintf('%02d', $x + 1);
        echo '<option value="' . $i . '"' . ($x + 1 == $currentMonth ? ' selected' : '') . '>' . $months[$x] . '</option>';
    }
?>

答案 1 :(得分:1)

这个怎么样?没有javascript。

$months = array('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC');

$match = 'SEP';

$buffer = "<select name='fieldname'>";

foreach($months as $value){
  $buffer .= "<option value=\"$value\"";
  if($value == $match){ $buffer .= " selected"; }
  $buffer .= ">$value</option>";
}

$buffer .= "</select>";     
echo $buffer;