выбор selected в форме

196
11 июня 2017, 16:29

Есть страница с формой, где пользователь вводит дату. При нажатии на button, вычисляется нужные данные, но форма обнуляется. То есть в форме опять показываются первые значения select option. Нужно, чтобы в выбранные пользователем option стали с атрибутом selected, после нажатия на button были опять показаны в форме. Делаю так:

<option value="05" <?php if ($_POST["days"] == 5) {echo "selected";} ?>>5</option>
<option value="06" <?php if ($_POST["days"] == 6) {echo "selected";} ?>>6</option>

но слишком много строк, есть ли другой способ?

Answer 1

Как насчёт выводить все эти строки в цикле?

<?
for ($i = 1; $i<=31; $i++) {
    ?><option value="<?=$i?>"<?
    if ($_POST["days"] === $i) {
        ?> selected<?
    }
    ?>><?=$i?></option><?
}
?>
Answer 2

Можно сократить вот таким образом:

<option value="05" <?= $_POST["days"] == 5 ? "selected" : "" ?>>5</option>

В идеале должен быть "виджет", который бы принимал массив всех элементов, а некоторые из которых имели бы св-во "выбранный" Например:

$elements = [
    ['value' => '05', 'selected' => false],
    ['value' => '06', 'selected' => true]
];
<?= Widget::dropDownList($elements);?>

Тогда метод Widget::dropDownList должен выводить тэг select.

Answer 3

Можно вот такую схему приспособить под вашу задачу. Только в вашем случае список перебирать через foreach

$selected[$show]=' selected="selected"';
echo '<select name="show">'."\n";
echo '<option value="1"'.$selected['1'].'>Активен</option>'."\n";
echo '<option value="0"'.$selected['0'].'>Не активен</option>'."\n";
echo '</select>'."\n";
unset($selected);
READ ALSO
XML file to Oracle

XML file to Oracle

ЗдравствуйтеТребуется создать xml и записать не данные а сам xml файл в таблицу Oracle

283
Что нужно для разработки умного дома на c++? [требует правки]

Что нужно для разработки умного дома на c++? [требует правки]

Имеется выбор между arduino и raspberry pi, но думаю, что важнее технологияС ардуиной более менее понятно: отправил данные на com port, получил, обработал...

208
Последние открытые файлы в RichTextBox

Последние открытые файлы в RichTextBox

Подскажите как можно реализовать отображение последних открытых файлов в RichTextBox? Нужно чтобы эти файлы отображались в виде списка и можно...

284
Ошибка при подключение к Windows Server по SSH c#

Ошибка при подключение к Windows Server по SSH c#

Ошибка при подключение к Windows Server по SSH

317