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

Значение параметра берется из базы данных и включается в поле выбора вместе с другими параметрами. Как я могу установить значение, взятое из базы данных, как выбранное?

Значение из базы данных устанавливается как $ row [‘value’] и равно s. В HTML параметры выглядят так …

<select name="select">
<option value='xxs'>Extra, Extra small</option>
<option value='xs'>Extra small</option>
<option value='s'>Small</option>
<option value='m'>Medium</option>
<option value='l'>Large</option>
<option value='xl'>Extra Large</option>
<option value='xxl'>Extra, Extra small</option>
</select>

Я хочу, чтобы при загрузке страницы отображалась опция $ row [‘value’] (Small) … Возможно ли это?

0

Решение

Хорошая новость заключается в том, что это возможно, и в PHP все очень просто. Сначала мы помещаем все наши параметры и их соответствующие значения в массив следующим образом:

<?php
$options=array('Extra, Extra small'=>'xxs','Extra small'=>'xs','Small'=>'s','Medium'=>'m','Large'=>'l','Extra Large'=>'xl','Extra, Extra Large'=>'xxl');

Затем откройте окно выбора и вызовите массив опций в цикле foreach …

echo '<select>';
foreach($options as $view=>$value){

Как вы, наверное, заметили, массив содержит поля, которые выглядят как ‘Large’ => ‘l’, и цикл for для каждого вызывает параметры как $ view => $ value. $ view представляет поле имени, в этом случае «Large», а $ value представляет поле значения «l». Это важно, если вы ожидаете, что пользователь увидит другие параметры в поле выбора, чем те, в которых установлены значения.

Затем мы создаем переменную $ selected, которая будет использоваться для определения соответствия между $ row [‘value’] и $ value …

$selected=($row['value'] == $value)? "selected" : "";

Это то же самое, что использование оператора if и else для установки переменной, но короче. Первый раздел после переменной спрашивает, равно ли $ row [‘value’] $ value, если это так, то $ selected = «selected» else (:) $ ​​selected устанавливается пустым.

Далее мы включаем варианты. Поскольку он находится в цикле foreach, нам нужна только одна строка, чтобы вставить все параметры …

echo '<option '.$selected.' value="'.$value.'">'.$view.'</option>';

Помните переменную $ selected на последнем шаге? Каждый раз, когда цикл foreach проходит через раздел массива параметров, установленный в начале, он проверяет, равняется ли $ row [‘value’] $ value. Если это так, то $ selected будет выбран как выбранный, и именно этот параметр будет отображаться при загрузке страницы. Он продолжается до конца массива до тех пор, пока все виды и значения не будут отсканированы и не вернет соответствующие параметры.

Наконец мы закрываем цикл foreach и поле выбора …

}
echo '</select>';

И вот, у вас это есть, автоматический способ сделать опцию окна выбора установленной. Аналогичный шаблон можно использовать для флажков, радиоселекторов, вкладок и многого другого.

Полный код …

<?php
$options=array('Extra, Extra small'=>'xxs','Extra small'=>'xs','Small'=>'s','Medium'=>'m','Large'=>'l','Extra Large'=>'xl','Extra, Extra Large'=>'xxl');

echo '<select>';

foreach($options as $view=>$value){
$selected=($row['value'] == $value)? "selected" : "";
echo '<option '.$selected.' value="'.$value.'">'.$view.'</option>';
}

echo '</select>';
1

Другие решения

Учитывая этот массив, и это значение, чтобы быть выбранным значением …

$options = array(
'Extra, Extra small' => 'xxs',
'Extra small' => 'xs',
'Small' => 's',
'Medium' => 'm',
'Large' => 'l',
'Extra Large' => 'xl',
'Extra, Extra Large' => 'xxl'
);

$selected = 'm';  // $selected can be swapped for $row['value'] as in the OP

Есть несколько способов динамически создать теги параметров внутри <select> и установить selected атрибут на одном из них.

Сначала однострочник внутри цикла foreach:

echo "<select name=\"select\">";
foreach($options as $text=>$value){
echo "<option value=\"$value\"" , ($selected == $value ? " selected" : "") , ">$text</option>";
}
echo "</select>";

Этот блок кода использует ternary conditional operator ака conditional operator ака shorthand if/else ака inline conditon, Идти Вот для дальнейшего чтения и примеров.

  • Используя двойные кавычки " Вам не нужно переключаться между литеральными строками и переменными. * Вы должны будете избегать двойных кавычек, которые вложены в строку, добавляя \, * Переменные могут быть заключены в фигурные скобки, чтобы изолировать их имя от окружающего текста. * Одинарные кавычки не будут отражать значение переменной.) Для продолжения читайте о цитировании: ссылка

  • Используя , (запятые) вместо . (точки), чтобы объединить строку, производительность увеличивается. один тест

  • Добавляя только пробел перед selected атрибут в true условие (вместо добавления пробела вне условия на каждой итерации) вы избегаете создания ненужных пробелов внутри тега.

  • Используя встроенный оператор условия, вы избегаете ненужного объявления переменной в глобальной области видимости. Если вы объявите selected string как переменная, как и @ independent.guru, она будет объявлена ​​/ перезаписана и использована только один раз на каждой итерации; это может только снизить производительность.

У каждого программиста будут свои предпочтения в отношении «читабельности», «краткости», «согласованности» и «производительности», и он может выбрать создание своего HTML-кода, используя любое сочетание вышеперечисленных методов.

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

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

Если первый блок кода был слишком компактным, вот две другие версии, которые распространяют метод на несколько строк без генерации каких-либо дополнительных переменных:

Разделенный сокращенный синтаксис if / else:

echo "<select name=\"select\">";
foreach($options as $text => $value){
echo "<option value=\"$value\"";
echo $selected == $value ? " selected" : "";
echo ">$text</option>";
}
echo "</select>";

Стандартно, если условно:

echo "<select name=\"select\">";
foreach($options as $text => $value){
echo "<option value=\"$value\"";
if($selected == $value){
echo " selected";
}
echo ">$text</option>";
}
echo "</select>";

Все вышеперечисленные версии одного и того же метода создадут этот визуализированный HTML:

Когда страница загружена:

введите описание изображения здесь

Когда элемент select открыт:

введите описание изображения здесь

Исходный код будет выглядеть так:

<select name="select"><option value="xxs">Extra, Extra small</option><option value="xs">Extra small</option><option value="s">Small</option><option value="m" selected>Medium</option><option value="l">Large</option><option value="xl">Extra Large</option><option value="xxl">Extra, Extra Large</option></select>

Это исходный код для удобства чтения:

<select name="select">
<option value="xxs">Extra, Extra small</option>
<option value="xs">Extra small</option>
<option value="s">Small</option>
<option value="m" selected>Medium</option>
<option value="l">Large</option>
<option value="xl">Extra Large</option>
<option value="xxl">Extra, Extra Large</option>
</select>
1

По вопросам рекламы [email protected]