获取所选项目的名称不是值

时间:2012-12-21 07:26:52

标签: php sql

我有一个在另一个文件中生成的下拉菜单,我想回显他们从下拉菜单中选择的项目的名称而不是它的值(0,1,2,3 ...)。

以下是在另一个文件中生成的下拉菜单的代码:

    <?php
        $selectedKey = $_GET['selected_key'];
        $query = "SELECT * FROM `1 selected` WHERE Key = '".$selectedKey."'";
        $run = mysql_query($query);
        $id1 = 0;
        while( $row = mysql_fetch_assoc( $run ) ) {
            echo "<option value='".$id1."'>".$row['Contract']."</option>";
        $id1++;
        }
   ?>

这就是它在index.php中的样子:

<select id="text2" name="text2">

</select>

现在,在他们提交数据之后,我想要回显他们选择的项目的名称,但是当我使用echo $_REQUEST['text2'];时,我得到了数字(值),但正如我所说的那样,我希望获得名称。

2 个答案:

答案 0 :(得分:2)

选择框将仅将其选定的值索引发送到服务器,而不是您看到的值。因此,只需使用$row['Contract']作为要发送到服务器的值:

echo "<option value='".$row['Contract']."'>".$row['Contract']."</option>";

答案 1 :(得分:1)

问题是浏览器不向服务器提交显示文本,只提供值。但有几种解决方法:

选项1
将值设置为显示文本而不是$id1。该值不必与显示文本不同。

选项2
在值中使用分隔符并设置值和显示文本:

 echo "<option value='".$id1. ';' . $row['Contract'] ."'>".$row['Contract']."</option>";

在分隔符上爆炸以获取两者:

list($value, $text) = explode(';', $_POST['text2']);

选项3
使用Javascript,将表单的onsubmit事件设置为使用显示文本填充隐藏输入的函数。