Вернуться на страницу трюков

Формы: автовыбор ранее выбранного select`а

Чтобы автоматически был выбран именно тот checkbox, или select, необходимо сравнить выводимые данные, и если данные совпадают – дописать “ checked”.
Допустим у нас есть массив данных, который выводится в цикле:
<?php
$cities = array('Москва','Киев','Лондон');
echo '<select name="city">';
foreach($cities as $v)
    echo '<option value="'.$v.'">'.$v.'</option>';
echo '</select>';

В массиве cities у нас хранятся названия городов. Далее мы достаем данные и узнаем, что было выбрано ранее (допустим Киев, но это не имеет значения) и помещаем в переменную $city – город, который сейчас выбран, его и будем сравнивать (для новичков поясню, это может быть и данные из базы: myrow['city']).
Если более простым путём показать, то мы просто сравниваем $v (значение данного элемента массива) с $city, если совпадают – добавляем " selected".
<?php
$cities = array('Москва','Киев','Лондон');
echo '<select name="city">';
foreach($cities as $v) {
    if ($v == $city) 
        {$select = ' selected';}
    else
        {$select = '';}
    echo '<option value="'.$v.'"'.$select.'>'.$v.'</option>';
}
echo '</select>';

Но эта схема достаточно большая, поэтому предлагаю все это укоротить воспользовавшись тернарным оператором:
<?php
$cities = array('Москва','Киев','Лондон');
echo '<select name="city">';
foreach($cities as $v) {
    echo '<option value="'.$v.'"'.($v == $city ? ' selected' : '').'>'.$v.'</option>';
}
echo '</select>';
Главная БАЗОВЫЙ КУРС ПЕРВЫЙ УРОВЕНЬ программирования ВТОРОЙ УРОВЕНЬ верстки ВТОРОЙ УРОВЕНЬ программирования Начать обучение Запуск проекта Мелкие трюки Делимся практикой трудоустройства Проверь свои знания Задачи по PHP MySQL Блог Отзывы