获取下拉框选中文本的PHP代码

4

我有一个名为“Make”的组合框。在该组合框中,我正在加载车辆制造商名称。当我点击“搜索”按钮时,我希望显示所选的制造商名称。以下是我的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并按下SEARCH按钮,我会得到答案为“2”的结果。这意味着它给了我“Toyota”的值。但是我想要显示名称“Toyota”。我该怎么做?请帮帮我。。。

我知道这很旧了,但是为什么不加上 if ($maker == "2") { echo "Toyota"; } 呢? - Momoro
7个回答

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;
}
 ?>

5
将您想要发送给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']];

这是不令人满意的。我真的想知道可能的帖子输入值和文本?没有JS只有PHP。 - Bora

1
您可以通过创建新的数组来实现此功能:

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

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

0

你可以使用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'];

然后你可以对文本进行任何操作,例如将其保存在会话变量中并发送到其他页面等。


0

更改您的选择框选项值:

<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

有没有其他方法可以在不更改HTML值的情况下获取制造商的名称,因为我正在从数据库表中加载这些值。在那里,我将主键放入此值属性中。 - Emmanuel Yasith
@user2234558,是的,您可以在选项值中使用键添加值,然后在PHP代码中分解它。 - Code Lღver
@user2234558,我已经编辑了发布的回答以适应您的需求。 - Code Lღver

0

如果你从数据库中取得它的话,则

<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>

0

我同意Ajeesh的观点,但是有更简单的方法来实现这个...

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

或者

if ($maker == 2) { }

  • 为什么我没有返回“Toyota”值?因为选择框中的“Toyota”选项已经返回了“2”,这意味着选择框中选择的制造商是丰田。

  • 用户如何知道该值是否等于选择框中的Toyota选项?在我的示例代码括号之间,您可以放置$maker = "Toyota"然后echo $maker,或者创建一个新字符串,例如:$maketwo = "Toyota",然后您可以echo $makertwo(我更喜欢创建一个新字符串,而不是覆盖$maker的原始值。)

  • 如果用户选择“Nissan”,示例代码会处理吗?是的,也不是。虽然“Toyota”将返回值“2”,但“Nissan”将返回值“3”。示例代码正在寻找的当前设置值为“2”,这意味着如果用户选择代表值“3”的“Nissan”,然后按“搜索”,则示例代码将不会被执行。您可以轻松更改代码以检查值“3”或值“1”,它表示“--任何--”。

  • 如果用户在选择框设置为“选择制造商”时单击“搜索”,该怎么办?如何防止他们这样做?为了防止他们进一步进行,将示例代码的设置值更改为“0”,并在括号之间放置您的代码,然后添加return;,它终止函数/语句中任何进一步代码的执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接