我有一个问题。我想用PHP创建一个下拉菜单,显示mit currentYear-2和currentYear+2。我创建了下拉菜单,但在选择和提交年份后,它又开始与未提交的年份。
我想,如果页面正在加载的下拉菜单开始与当前的一年,然后在更改和提交与选定的年份。
非常感谢
获取和设置年份的PHP函数。
function getCurrentYears(){
$thisYear = date("Y");
for($i=($thisYear-2); $i<($thisYear+3); $i++){
echo "<option value='" .$i. "'>" .$i. "</option>";
}
}
调用该函数的HTML。
<div>
<label for="chooseYear"> Choose a year </label>
<select name="chooseYear" id="chooseYear" class="form-control">
<option value='-'>-</option>
<?php getCurrentYears(); ?>
</select>
</div>
你错过了添加 selected
钥匙 select
输入.另外,我建议你不要把视图和PHP代码混用。
<?php declare(strict_types=1);
function getYearsFromRange($yearsRange): array
{
$currentYear = (int) date('Y');
$years = [];
foreach ($yearsRange as $year) {
$years[] = ['year' => $year, 'selected' => ($year === $currentYear)];
}
return $years;
}
和HTML脚本。
<div>
<label for="chooseYear"> Choose a year </label>
<select name="chooseYear" id="chooseYear" class="form-control">
<?php foreach (getYearsFromRange(range(date('Y') - 2, date('Y') + 3))
as ['year' => $year, 'selected' => $selected]
): ?>
<option value="<?php echo $year;?><?php echo ($selected) ? ' selected' : '';?>>
<?php echo $year; ?>
</option>
<?php endforeach; ?>
</select>
</div>
$selected = ( $i == $row1['year'] ? ' selected' : '' );
echo "<option value ='".$i."'".$selected.">".$i."</option>" ;
而$row1['year']是数据库中的值。只有当你提交数据库中的年份时,这才会有效。
你可以使用 selected
或 selected="selected'
在 option
标签
函数getCurrentYears(){ $thisYear = date("Y")。
for($i=($thisYear-2); $i<($thisYear+3); $i++){
if($i == $thisYear){
echo "<option value='" .$i. "' selected>" .$i. "</option>";
}
else{
echo "<option value='" .$i. "' >" .$i. "</option>";
}
}
}