Код PHP для получения выделенного текста поля со списком

У меня есть поле со списком "Сделать". В этом поле со списком я загружаю названия производителей транспортных средств. Когда я нажимаю кнопку ПОИСК, я хочу отобразить имя выбранного производителя. Ниже приведена часть моего HTML-кода.

<label for="Manufacturer"> Manufacturer : </label>
<select id="cmbMake" name="Make" >
   <option value="0">Select Manufacturer</option>
   <option value="1">--Any--</option>
   <option value="2">Toyota</option>
   <option value="3">Nissan</option>
</select>

<input type="submit" name="search" value="Search"/>

Ниже приведен мой PHP-код, который я сделал.

 <?php

if(isset($_POST['search']))
{
    $maker = mysql_real_escape_string($_POST['Make']);
    echo $maker;
    }
 ?>

Если я выберу Toyota из поля со списком и нажму кнопку ПОИСК, я получу ответ как «2». Это означает, что это дает мне ценность «Тойоты». Но я хочу отобразить имя «Тойота». Как я могу это сделать? Пожалуйста помогите ....


person Emmanuel Yasith    schedule 16.08.2013    source источник
comment
Я знаю, что это старо, но все же.. Почему бы вам просто не добавить if ($maker == "2") { echo "Toyota"; } ?   -  person Momoro    schedule 02.03.2020


Ответы (7)


Попробуйте с этим. Вы получите значение поля выбора в $_POST['Make'], а имя — в $_POST['selected_text']

<form method="POST" >
<label for="Manufacturer"> Manufacturer : </label>
  <select id="cmbMake" name="Make"     onchange="document.getElementById('selected_text').value=this.options[this.selectedIndex].text">
     <option value="0">Select Manufacturer</option>
     <option value="1">--Any--</option>
     <option value="2">Toyota</option>
     <option value="3">Nissan</option>
</select>
<input type="hidden" name="selected_text" id="selected_text" value="" />
<input type="submit" name="search" value="Search"/>
</form>


 <?php

if(isset($_POST['search']))
{

    $makerValue = $_POST['Make']; // make value

    $maker = mysql_real_escape_string($_POST['selected_text']); // get the selected text
    echo $maker;
}
 ?>
person Ajeesh    schedule 16.08.2013

Поместите все, что вы хотите отправить в PHP, в атрибут value.

  <select id="cmbMake" name="Make" >
     <option value="">Select Manufacturer</option>
     <option value="--Any--">--Any--</option>
     <option value="Toyota">Toyota</option>
     <option value="Nissan">Nissan</option>
  </select>

Вы также можете опустить атрибут value. По умолчанию используется текст.

Если вы не хотите менять HTML, вы можете поместить массив в свой PHP для перевода значений:

$makes = array(2 => 'Toyota',
               3 => 'Nissan');

$maker = $makes[$_POST['Make']];
person Barmar    schedule 16.08.2013
comment
Это неудовлетворительно. Мне действительно интересно, что возможно ввести значение ввода и текст? Без JS только PHP - person Bora; 16.08.2013

Вы можете добиться этого, создав новый массив:

<?php
$array = array(1 => "Toyota", 2 => "Nissan", 3 => "BMW");

if (isset ($_POST['search'])) {
  $maker = mysql_real_escape_string($_POST['Make']);
  echo $array[$maker];
}
?>
person Bora    schedule 16.08.2013

если вы извлекаете его из базы данных, то

<select id="cmbMake" name="Make" >
<option value="">Select Manufacturer</option>
<?php $s2="select * from <tablename>"; 
$q2=mysql_query($s2); 
while($rw2=mysql_fetch_array($q2)) { 
?>
<option value="<?php echo $rw2['id']; ?>"><?php echo $rw2['carname']; ?></option><?php } ?>
</select>
person chirag ode    schedule 16.08.2013

Измените значение параметров поля выбора:

<select id="cmbMake" name="Make" >
     <option value="">Select Manufacturer</option>
     <option value="Any">--Any--</option>
     <option value="Toyota">Toyota</option>
     <option value="Nissan">Nissan</option>
  </select>

Вы не можете получить текст выбранного параметра в php. это даст только значение выбранного параметра.

ОТРЕДАКТИРОВАНО:

<select id="cmbMake" name="Make" >
     <option value="0">Select Manufacturer</option>
     <option value="1_Any">--Any--</option>
     <option value="2_Toyota">Toyota</option>
     <option value="3_Nissan">Nissan</option>
  </select>

В файле php:

$maker = mysql_real_escape_string($_POST['Make']);
$maker = explode("_",$maker);
echo $maker[1]; //give the Toyota
echo $maker[0]; //give the key 2
person Code Lღver    schedule 16.08.2013
comment
Нет ли другого способа получить название производителя без изменения значения html. потому что я загружаю эти значения из таблицы базы данных. В них я помещаю первичный ключ в этот атрибут значения. - person Emmanuel Yasith; 16.08.2013
comment
@user2234558 user2234558 да, вы можете добавить значение с ключом в значение параметра, а затем взорвать его в PHP-коде. - person Code Lღver; 16.08.2013
comment
@user2234558 user2234558 Я отредактировал опубликованный ответ для вашего изощрения. - person Code Lღver; 16.08.2013

вы можете создать событие jQuery onChange, чтобы получить текст из поля со списком, когда пользователь выбирает один из них:

<script>    
     $( "select" )
     .change(function () {
     var str = "";
     $( "select option:selected" ).each(function() {
     str += $( this ).text() + " ";
     });
     $('#EvaluationName').val(str);
     })
     .change();
 </script>

Когда вы выбираете параметр, он сохраняет текст в скрытом поле ввода.

  <input type="hidden" id="EvaluationName" name="EvaluationName" value="<?= $Evaluation ?>" />

После этого, когда вы отправляете форму, просто догоняйте значение ввода

$Evaluation = $_REQUEST['EvaluationName'];

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

person David Ortega    schedule 23.08.2018

Я согласен с Аджишем, но есть более простые способы сделать это...

if ($maker == "2") { }

or

if ($maker == 2) { }

  • Почему я не возвращаю значение «Тойота»? Потому что выбор «Toyota» в поле выбора уже вернул бы «2», что указывало бы на то, что выбранным производителем в поле выбора будет Toyota.

  • Как пользователь узнает, равно ли значение выбранному Toyota в поле выбора? Между квадратными скобками моего примера кода вы должны поместить $maker = "Toyota", а затем echo $maker, или создать новую строку, например: $maketwo = "Toyota", затем вы можете echo $makertwo (я предпочитаю создавать новую строку, а не перезаписывать исходное значение $maker).

  • Если пользователь выберет «Nissan», позаботится ли пример кода и об этом?..? И да и нет. В то время как «Toyota» вернет значение «2», «Nissan» вместо этого вернет значение «3». Текущее установленное значение, которое ищет код примера, равно «2», что означает, что если пользователь выберет «Nissan», что представляет значение «3», а затем нажмет «Поиск», код примера не будет выполнен. Вы можете легко изменить код, чтобы проверить значение "3" или значение "1", которое представляет "--Any--".

  • Что, если пользователь нажмет «Поиск», когда в поле выбора установлено значение «Выбрать производителя»? Как я могу предотвратить их от этого? Чтобы предотвратить их дальнейшую работу, измените установленное значение кода примера на «0», а между скобками вы можете поместить свой код, а затем добавить return;, что завершает выполнение любого дальнейшего кода в пределах функция/оператор.

person Momoro    schedule 26.01.2020