PHP获取下拉框的值和文本

10
<select id="animal" name="animal">                      
<option value="0">--Select Animal--</option>
<option value="1">Cat</option>
<option value="2">Dog</option>
<option value="3">Cow</option>
</select>

if($_POST['submit'])
{
$animal=$_POST['animal'];
}

我有一个下拉菜单像这样。我想要的是,在使用PHP的提交按钮中获取所选值和文本。我的意思是如果选择了第一个,我想获取1Cat两个值。

4个回答

18

你为什么不直接使用这个呢?

<select id="animal" name="animal">                      
  <option value="0">--Select Animal--</option>
  <option value="Cat">Cat</option>
  <option value="Dog">Dog</option>
  <option value="Cow">Cow</option>
</select>

if($_POST['submit'] && $_POST['submit'] != 0)
{
   $animal=$_POST['animal'];
}

永远不要将选项文本重复为 value 属性 -- 这是无意义的标记膨胀。这种冗余永远没有任何好处。在不存在值属性的情况下,表单提交和JavaScript将知道您所需的值但没有值属性。 - mickmackusa

17
$animals = array('--Select Animal--', 'Cat', 'Dog', 'Cow');
$selected_key = $_POST['animal'];
$selected_val = $animals[$_POST['animal']];
使用$animals列表生成您的下拉列表;现在您可以获取该键的键和值。

实际上,在这种情况下,下拉菜单是由数据库生成的。 - Sasindu H
1
从数据库生成没有任何区别。您可以使用从数据库检索的值生成一个数组,用于下拉列表。因此,您有一个服务器端数组可用于创建下拉列表,您可以获取POSTED值并将其映射到映射回数据库ID的数组中的键。 - john

1
你可以使用 JS 文件和 AJAX 调用来实现。在使用 JS 文件验证数据时,我们可以读取所选下拉列表的文本。保留 HTML 标签,不进行解释。
$("#dropdownid").val();   for value
$("#dropdownid").text(); for selected value

将这些内容捕获到两个变量中,并将其作为输入传递给用于调用 PHP 文件的 AJAX 调用。
$.ajax 
   ({
     url:"callingphpfile.php",//url of fetching php  
     method:"POST", //type 
     data:"val1="+value+"&val2="+selectedtext,
     success:function(data) //return the data     
     {

}

在PHP中,您可以这样获取它:

    if (isset($_POST["val1"])) {
    $val1= $_POST["val1"] ;
}

if (isset($_POST["val2"])) {
  $selectedtext= $_POST["val1"];
}

1

你需要在服务器端保存关系。当表单提交时,只有值部分被传输。你可以做一些不好的事情,比如...

<option value="2|狗">狗</option>

然后如果你真的想要,就把结果拆开,但这是一个丑陋的黑客行为,而且浪费带宽,假设数字是真正唯一的,并且与文本具有一对一的关系。

最好的方法是创建一个数组,并循环遍历该数组以创建HTML。一旦表单被提交,您可以使用该值在同一数组中查找文本。


谢谢您的回答。但是我这里只发布了一个示例。实际上,在我的情况下,我是使用数据库生成此下拉菜单的。另一种情况是,如果我没有将此文本插入到特定的表中,则在显示数据时我必须连接3个表。 - Sasindu H

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