我有一个包含21个赛季的$seasons
变量。对于每个季节,我想在html中选择一个你可以选择的选项。如果我按下提交按钮,我想要在提交之前选择的选项仍然被选中。我试着用这段代码做到这一点:
<select name="season" id="season" class="filter-season">
<option value="all">-- Alle seizoenen --</option>
<?php foreach($seasons as $season): ?>
<option <?php if (isset($_GET['season']) == $season['season']){?> selected = "true" <?php }; echo "selected" ?>\value="<?php echo $season['season'] ?>"><?php echo $season['season']; ?></option>
<?php endforeach; ?>
</select>
问题是选项的值总是跳回到21。
你需要
selected="selected"
代替
selected=true
<select name="season" id="season" class="filter-season">
<option value="all">-- Alle seizoenen --</option>
<?php foreach($seasons as $season): ?>
<?php
$isSelected = (isset($_GET['season']) && $_GET['season'] == $season['season']) ? 'selected="selected"' : '';
?>
<option <?php echo $isSelected;?> value="<?php echo $season['season'] ?>"><?php echo $season['season'];?></option>
<?php endforeach; ?>
</select>
这取决于您的数组类型,但对于正常数组:
$seasons = [
'winter',
'summer'
];
$selected_season = isset($_GET['season']) ? $_GET['season'] : false;
<select name="season" id="season" class="filter-season">
<option value="all">Alle seizoenen</option>
<?php foreach($seasons as $season): ?>
<option value="<?= $season; ?>" <?php $season == $selected_season ? 'selected="selected"' : ''?>><?= $season; ?></option>
<?php endforeach; ?>
</select>
你犯了一个错误。我重写了你的代码:
<select name="season" id="season" class="filter-season">
<option value="all">-- Alle seizoenen --</option>
<?php foreach($seasons as $season): ?>
<option <?php if (isset($_GET['season']) && $_GET['season'] == $season['season']) echo "selected" ?> value="<?php echo $season['season'] ?>"><?php echo $season['season']; ?></option>
<?php endforeach; ?>
</select>
您的“echo selected”调用超出了您的if语句。在您的情况下,您选择了所有选项,然后您的浏览器显示最后选择的选项,在您的情况下选项21.此外,您的if语句本身也是错误的。
我重写了你的代码。它现在检查是否设置了$_GET['season']
以及$_GET['season']
是否等于$season['season']