Значение параметра не соответствует правильному значению - PullRequest
1 голос
/ 05 апреля 2019

У меня есть переменная $seasons, которая содержит 21 сезон. Для каждого сезона я хочу сделать вариант в 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.

Ответы [ 3 ]

3 голосов
/ 05 апреля 2019

Вам нужно

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>
1 голос
/ 05 апреля 2019

Это зависит от типа вашего массива, но для обычного массива:

 $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>
0 голосов
/ 05 апреля 2019

Вы ошиблись.Я переписал ваш код:

<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. Также ваш , если заявление само по себе было неправильно.

Я переписал, выкод.Теперь он проверяет, установлена ​​ли $_GET['season'] и равна ли $_GET['season'] $season['season']

...