用于获取组合框的选定文本的 PHP 代码

Posted

技术标签:

【中文标题】用于获取组合框的选定文本的 PHP 代码【英文标题】:PHP code to get selected text of a combo box 【发布时间】:2013-08-18 13:12:35 【问题描述】:

我有一个名为“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' 。这意味着它给了我“丰田”的价值。但我想显示名称“丰田”。我怎样才能做到这一点?请帮帮我....

【问题讨论】:

我知道这是旧的,但仍然......你为什么不直接添加 if ($maker == "2") echo "Toyota"; 【参考方案1】:

更改您的选择框选项值:

<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.ini 中获取所选选项的文本。它只会给出所选选项的值。

已编辑:

<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值的情况下获取厂商名称。因为我正在从数据库表中加载这些值。在他们中,我将主键放入此值属性。 @user2234558 是的,您可以在选项的值中添加键值,然后在 PHP 代码上展开。 @user2234558 我已经为您编辑了已发布的答案。【参考方案2】:

将您想要发送到 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【参考方案3】:

您可以通过创建新数组来实现:

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

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

?>

【讨论】:

【参考方案4】:

如果你从数据库中获取它,那么

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

【讨论】:

【参考方案5】:

试试这个。您将在 $_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;

 ?>

【讨论】:

【参考方案6】:

当用户选择其中之一时,您可以创建一个 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'];

然后你可以对文本做任何你想做的事情,例如将其保存在会话变量中并将其发送到其他页面。等等

【讨论】:

【参考方案7】:

我同意 Ajeesh,但有更简单的方法可以做到这一点......

if ($maker == "2")

if ($maker == 2)

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

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

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

如果用户在选择框设置为“选择制造商”时单击“搜索”会怎样?我怎样才能阻止他们这样做?为了防止它们继续进行,请将示例代码的设置值更改为“0”,在括号之间,您可以放置​​您的代码,然后添加return;,这将终止任何进一步代码的所有执行在函数/语句中。

【讨论】:

以上是关于用于获取组合框的选定文本的 PHP 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中从表单提交的组合框中获取选定的值

获取组合框的选定值

如何检索组合框的选定值(不是文本)

文本框的可见性取决于组合框的值

如何在C#中获得组合框的所有选定值

在 ExtJS 中获取组合框的值