У меня есть раскрывающийся список выбора, в котором я хочу иметь предопределенный выбранный вариант на основе данных SQL.

Мой вызов sql:

$sel = 'SELECT threechar_currency_code, currency_name FROM currencies';
$RS = doQuery($sel);
while($row = fetchAssoc($RS)){

   //The else is working, the code in the if() is what i wish to get working
/* if ($row['threechar_currency_code'] === $selected_currency){
    $currencies[] = array(
        'selected' => true,
        'currency_code' => $row['threechar_currency_code'],
        'currency_name' => $row['currency_name']
    );
}  else { */
    $currencies[] = array(
        'currency_code' => $row['threechar_currency_code'],
        'currency_name' => $row['currency_name']
    );
// }
}

Мой выбор:

<select class="mdb-select md-form" id="currency" name="currency" placeholder="Select currency" value=""
                                            required searchable="Search here..">
                                            <option value="none" disabled selected="selected">Currency</option>
                                            <?php
                                            foreach ($currencies as $c){
                                                echo '<option value="'.$c['currency_code'].'">'.$c['currency_name'].'</option>';
                                            }
                                            ?>
                                        </select>

Чтобы указать, все отлично заполняется только else {}, я просто хочу иметь предварительно выбранный параметр, если он соответствует предварительно выбранному значению. заранее спасибо

0
erlandoss 14 Сен 2020 в 12:15

2 ответа

Лучший ответ

Теперь вы жестко запрограммировали параметр по умолчанию. Удалите его и сделайте нотоносец в цикле foreach (используйте if в цикле).

0
Masoud Shariati 14 Сен 2020 в 09:33

Вам необходимо указать атрибут selected в вашем цикле, если он существует

echo '<option value="'.$c['currency_code'].'" ' . (isset($c['selected']) ? "selected=true" : "") . '> . $c['currency_name']</option>

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

while($row = fetchAssoc($RS)){

   $currency = [
     'currency_code' => $row['threechar_currency_code'],
     'currency_name' => $row['currency_name']
   ]
   if($row['threechar_currency_code'] === $selected_currency) {
     $currency['selected'] = true;
   }
   $currencies[] = $currency;     
}
0
jameson2012 14 Сен 2020 в 09:44