написать выбранный атрибут в динамически написанных опциях

два select теги — months а также years:

<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 на текущий месяц и год?

В случае лет это всегда последний вариант, а в месяцах он может быть по любому индексу.

0

Решение

Вы можете проверить, равен ли текущий месяц 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

Другие решения

Как насчет этого? Нет 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;
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector