получить текст выбранной опции, используя php

В следующих:

<form action="test.php" method="POST"> <select id="test" name="test"> <option value="1">Test One</option> <option value="2">Test Two</option> </select> </form> 

в test.php, я могу получить 1 или 2 следующим образом:

 $result=$_POST['test']; 

Как я могу получить текст выбранного варианта (т. Е. «Test One» или «Test Two»), используя php

Это не то, что можно сделать только с помощью PHP. Сценарий PHP может только «видеть» информацию, которая публикуется ( value для selected варианта, который отправляется). Вы можете использовать javascript для изменения скрытого поля input с текстовым содержимым выбранного option , и это будет включено в массив $_POST :

 <form action="test.php" method="POST"> <select id="test" onchange="document.getElementById('text_content').value=this.options[this.selectedIndex].text"> <option value="1">Test One</option> <option value="2">Test Two</option> </select> <input type="hidden" name="test_text" id="text_content" value="" /> </form> 

Это сделает доступным $_POST['test_text'] с выбранным индексом (но вы также должны принудительно использовать onchange() когда страница загружается так, что она будет заполнена, даже если пользователь покинет поле выбора со значением по умолчанию.

На сервер будет отправлено только value элемента управления формой. Легкий способ отправить оба состоит в том, чтобы просто включить оба value :

 <select name="test"> <option value="1|Test one">Test one</option> <option value="2|Test two">Test two</option> </select> 

А потом:

 $test = explode('|', $_POST['test']); 

Тогда вы закончите с $test[0] как «1», а $test[1] будет «Test one».

Вы не можете; эта информация не отправляется обратно на сервер. Вам нужно будет посмотреть, как вы сгенерировали HTML в первую очередь и получить текст оттуда.

Он не отправляется, поэтому единственный способ получить его – иметь значения сопоставления массива с заголовками в вашем PHP-коде.

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

У меня есть типы зданий, которые мне нужно выбрать. Несколько типов зданий имеют уникальный набор вопросов, например, отделение банка, центр обработки данных, зал суда и т. Д. Но есть много таких вопросов, которые я называю другим типом. Каждый параметр имеет соответствующее значение, например, Bank Branch имеет значение «Bank_Branch», у Data Center есть «Data_Center», но у другого типа есть значение «Other_Type». Текст для «Other_Type» отличается в зависимости от типа здания, такого как конференц-центр, музей, исполнительское искусство и т. Д. Поэтому мне нужно значение «Other_Type», чтобы «показать» вопросы в блоке DIV «Other_Type» при использовании текста значение для отправки по электронной почте, определяющее тип здания, например, конференц-центр, музей, исполнительское искусство и т. д.

Любой способ использовать PHP для получения текстового значения выбранного элемента? Я уже использую следующие внутри HTML

  var sele = document.getElementById('building_type'); var seleVal = sele.options[sele.selectedIndex].value; var seleTxt = sele.options[sele.selectedIndex].text; document.getElementById("other_text").innerHTML = seleTxt; 

Я не вижу способа сделать это.

SOLVED: я могу просто создать скрытый div, и в моем чеке для Other Type установите innerHTML для скрытого div.

Текст для выбранного варианта не передается через HTML-форму. Если вы хотите текст, вы должны сохранить это в скрытом вводе HTML на своей странице или вам нужно добавить некоторую бизнес-логику в свой PHP-код, чтобы перевести значение ìd в текст (через оператор switch или путем запроса база данных и т. д.)

К сожалению, когда вы отправляете форму и переменную, она принимает только один параметр, который является его значением. Вам нужно будет сделать значение. Test One – значение, чтобы оно передавалось скрипту PHP. Какова цель value = "1", потому что вы, вероятно, можете использовать ее в другом атрибуте?

Я не опытный программист php, но вы можете проверить значение, выбранное в теге SELECT, с помощью php. Я не знаю, почему люди говорят, что не могу.

 if ( $_POST['test'] == 1) { do something } else { option value 2 is selected, do something else } 

Я уверен, что это сработает.

Попробуйте, если 1, 2 не требуется. вы получите требуемый текст как значение

 <form action="test.php" method="POST"> <select id="test" name="test"> <option value="Test One">Test One</option> <option value="Test Two">Test Two</option> </select> </form>