Значение параметра берется из базы данных и включается в поле выбора вместе с другими параметрами. Как я могу установить значение, взятое из базы данных, как выбранное?
Значение из базы данных устанавливается как $ 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) отображался при загрузке страницы … Это возможно?
Хорошая новость заключается в том, что это возможно, и на 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', и для каждого цикла вызывается для опций как $ view => $ value. $ view представляет поле имени, в этом случае «Large» и $ value представляют значение поля «l». Это важно, если вы ожидаете, что пользователь увидит различные опции в поле выбора, чем то, на что установлены значения.
Затем мы создаем переменную $ selected, которая будет использоваться, чтобы определить, существует ли соответствие между $ row ['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'] значение $. Если это так, то $ 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>';
Учитывая этот массив, и это значение будет выбранным значением …
$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
aka conditional operator
aka shorthand if/else
aka inline conditon
. Перейдите сюда для дальнейшего чтения и примеров.
Используя двойные кавычки, вы избегаете переключаться между буквальными строками и переменными. * Вам придется избегать двойных кавычек, вложенных внутри строки, путем добавления \
. * Переменные могут быть завернуты в фигурные скобки, чтобы изолировать их переменную имя из текста объемного звучания. * Одиночные кавычки не будут отражать значение переменной.) Для продолжения чтения о цитировании: ссылка
Используя ,
(запятые) вместо .
(точки) для конкатенации строки, производительность увеличивается. один критерий
Добавляя пробел перед selected
атрибутом в true
состоянии (по сравнению с добавлением пространства вне условия на каждой итерации), вы избегаете создания ненужных пробелов внутри вашего тега.
Используя оператор inline condition, вы избегаете ненужного объявления переменной в глобальной области. Если вы объявите selected
строку как переменную, как это делает GCRdev, она будет объявлена / перезаписана и использована только один раз на каждой итерации; это может только снизить производительность.
У каждого программиста будут свои предпочтения в отношении «удобочитаемости», «краткости», «согласованности» и «эффективности», и они могут выбрать, чтобы построить свой 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 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>