如何从POST请求获取下拉选项标签?

时间:2009-12-25 14:41:01

标签: php

我有一个填充下拉菜单的数组。密钥是我的数据库密钥,值是相应的数据库值。我遇到的问题是,当我发布表单时,我得到的是POSTed数值而不是下拉列表中的字符串值。我可以查询数据库以获取字符串,但必须有更好的方法来执行此操作,因为我已经在数组中有两个值。我不能使用array_search,因为该数组是多维的。有人可以提供帮助吗?

由于

foreach($dd as $k=>$v)
{
    echo'<option value="'.$v['ace_id'].'">'.$v['arua'].'</option>';
}

2 个答案:

答案 0 :(得分:0)

HTML input字段(还包括selecttextareabutton)仅将 name-value 对发送到服务器方(在namevalue属性中指定)。他们发送任何文字表示。

您事先已经知道服务器端的文本和标签(如何打印它们?),在请求参数中完全没有意义。

您可以通过多种方式解决这个“问题”:

  1. 只需在选项value属性中指定所需的值,而不是选项标签。
  2. 添加隐藏的输入字段,将选项标签传回。
  3. 使用这些键值对在服务器端内存中维护一个全局数组。
  4. 从数据库中获取值。
  5. 什么都不做。在大多数情况下,您实际上并不需要它们,只需编写智能代码。
  6. 更新:这是一个基本示例(没有像issethtmlspecialchars这样的整洁检查,但这取决于您):

    $selected = $_POST['dropdownname'];
    
    foreach ($options as $value => $label) {
        echo '<option value="' . $value . '"' . ($value == $selected ? ' selected' : '') .  '>' . $label . '</option>';
    }
    

答案 1 :(得分:0)

如果您想要下拉列表中的文本名称而不是密钥,请将其放在value =“”部分中。如果你想要两者,那么把它们放在那里并用逗号分隔它们并在其上运行split()。