Поля HTML input
(включая select
, textarea
и button
) отправляют только пары имя-значение на сторону сервера (как указано в name
и value
приписывается). Они не отправляют текстовое представление вдоль него.
Вы уже знаете текст и метки на стороне сервера заранее (как бы вы их распечатали?), Их нет абсолютно никакого смысла в параметрах запроса.
Вы можете решить эту «проблему» несколькими способами:
- Просто укажите нужное значение в атрибуте опции
value
, а не в качестве метки опции.
- Добавить скрытые поля ввода, которые возвращают метку опции.
- Поддерживать глобальный массив в памяти на стороне сервера с этими парами ключ-значение.
- Идите, получите значение из БД.
- Ничего не делать. В большинстве случаев они вам на самом деле не нужны, просто пишите умный код.
Обновление : вот базовый пример (без проверки работоспособности, такой как isset
и htmlspecialchars
, но это зависит от вас):
$selected = $_POST['dropdownname'];
foreach ($options as $value => $label) {
echo '<option value="' . $value . '"' . ($value == $selected ? ' selected' : '') . '>' . $label . '</option>';
}