PHP получить выпадающий список выберите значение параметра
В моем выпадающем списке у меня есть два разных значения для каждого параметра. Как я могу получить и то, и другое? Позвольте мне проиллюстрировать, что я имею в виду.
<select name="my_ddl">
<option value="<?php $value_Id ?>"><?php $value_text ?></option>
<option value="<?php $value_Id ?>"><?php $value_text ?></option>
</select>
Когда форма будет опубликована, я хочу иметь возможность получить как $value_id, так и $value_text выбранного параметра. Как я могу это сделать?
$_POST['my_ddl'] получает только одно значение, а не оба.
В asp.net Я мог бы сделать это, просто обратившись к my_ddl.Value и my_ddl.Text.
Спасибо вам!
4 answers
Строго говоря, это невозможно.
Что вы могли бы сделать , это использовать разделитель в вашем атрибуте value
:
<select name="my_ddl">
<option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?>
</option>
</select>
И...
<?php
list($id, $text) = explode('|', $_POST['my_ddl']);
//...
?>
Еще один странный способ сделать это:
<select name="my_ddl">
<option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]">
<?php echo $value_text ?>
</option>
</select>
Затем, когда вы его обработаете, вы можете сделать это или, может быть, даже что-то более простое:
foreach ($_POST['my_dd1'] as $value_Id => $value_text) {
$value_Id = $value_Id;
$value_text = $value_text;
}
Потому что php обрабатывает [] как означающее, что строка является массивом, и поэтому у вас мгновенно появляется ассоциативный массив. Я согласен, однако, что если вы поместите его туда в первую очередь, вы должны иметь возможность просто снова посмотреть его в коде, а не полагаться на это.
Если вы используете PHP для заполнения текста для <option>
, то, вероятно, вы можете просто посмотреть значение на сервере. Возможно, вам просто нужно использовать $value_id для поиска текста в таблице базы данных?
Если нет, вы можете включить скрытое поле в свою форму и использовать JavaScript для обновления этого скрытого поля текстом каждый раз, когда выбирается новое значение.
Вы не можете получить value_text из данных POST. Одним из решений является заполнение скрытого поля после выбора опции с помощью JavaScript.