[PHP] Выделение активного пункта

R
На сайте с 06.04.2012
Offline
46
1603

Здравствуйте.

Пока есть такой вопрос.

Есть скрипт где происходит добавление данных в базу. Одним из пунктов является приоритет и время уведомления. Реализованы так:

<select class="form-control" name="pr">
<option value="1">Очень низкий</option>
<option value="2">Низкий</option>
<option value="3" selected>Нормальный</option>
<option value="4">Высокий</option>
<option value="5">Критичный</option>
</select>

В БД это сохраняется в ячейку pr как 1, 2, etc...

А также, есть скрипт изменения данных. Данные запрашиваются с бд и пихаются в массив (назовём его $myrow).

В итоге запрашивая $myrow[pr] - я получаю номер приоритета. Т.е. 1, 2 и т.п.

Вопрос:

Каким образом мне нужно обработать, чтобы благодаря приоритету, в селекторе параметр selected встал в соответствии со своим значением. Например, $myrow[pr]=2, соответственно, после option value="2" должно стоять selected.

Благодарю.

ДП
На сайте с 23.11.2009
Offline
203
#1

Если у вас эти значения прям так прописаны в шаблоне по пунктам - то примерно так можно


<select class="form-control" name="pr">
<option value="1"<?=($myrow['pr']==1?' selected="selected"':'');?>>Очень низкий</option>
<option value="2"<?=($myrow['pr']==2?' selected="selected"':'');?>>Низкий</option>
<option value="3"<?=($myrow['pr']==3?' selected="selected"':'');?>>Нормальный</option>
<option value="4"<?=($myrow['pr']==4?' selected="selected"':'');?>>Высокий</option>
<option value="5"<?=($myrow['pr']==5?' selected="selected"':'');?>>Критичный</option>
</select>

или вариант еще - генерить js, который вам нужный пункт установит после загрузки страницы.

R
На сайте с 06.04.2012
Offline
46
#2

До JS пока не дошли руки;)

Действительно, решение проще чем я думал. Спасибо.

Вы использовали краткую запись

<?=($myrow['pr']==1?' selected="selected"':'');?>

равнозначно <?if ($myrow['pr']==1) {echo "selected";}?>

Пожалуйста, подскажите, где можно ознакомиться подробнее с краткой записью? Благодарю.

doctorpc
На сайте с 12.07.2009
Offline
112
#3
ruuman:
До JS пока не дошли руки;)
Действительно, решение проще чем я думал. Спасибо.
Вы использовали краткую запись
<?=($myrow['pr']==1?' selected="selected"':'');?>

равнозначно <?if ($myrow["pr"]==1) {echo "selected";}?>
Пожалуйста, подскажите, где можно ознакомиться подробнее с краткой записью? Благодарю.

В данном случае это почти одно и то же и разницы в результате не будет.

Однако это все же значит:


if ($myrow['pr']==1) {
echo "selected";
} else {
echo "";
}

Google Вам в помощь, по запросу "короткая запись php" находится куча документов.

ДП
На сайте с 23.11.2009
Offline
203
#4
ruuman:
До JS пока не дошли руки;)
Действительно, решение проще чем я думал. Спасибо.
Вы использовали краткую запись

Тут на самом деле две возможности php использованы - short tags - <?= что равнозначно <?php echo

и тернарный оператор - это короткая запись if.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#5

ИМХО я не страдаю такой фигнё через PHP. Если будут динамические списки и их будет ну примерно 10 штук. Это будет гемор.

Лично пользуюсь вот такой функцией в JS

function selectOptionByValue(selObj, val){var A= selObj.options, L= A.length;while(L){if (A[--L].value== val){selObj.selectedIndex= L;L= 0;}}}

Вызов:

<select class="form-control" name="pr" id="mag">

selectOptionByValue(document.getElementById('mag'),"<?=$mag?>");

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий