如何从select标签中获取两个值

时间:2013-11-15 23:17:11

标签: php forms post explode

我已经运行了一些返回id的代码,现在我需要返回id和name。我觉得这应该是非常容易的,但我很难做到这一点。我试图破坏这些值,仍然无法使$ name起作用。

代码:

 <select name="id" required="true" value="<?php echo $row['name']; ?>">
   <?php                         
     $row="SELECT id, name FROM modules";
     while ($row = $stmt->fetch()){
     echo "<option value=\"" . $row['id'] . "\">" . $row['name'] . "</option>";
     }

       list($id,$name) = explode(".",$_GET['id']);
       echo $name;
   ?>
 </select>

如果可能的话,我希望能够从下拉菜单中获取ID和名称。

3 个答案:

答案 0 :(得分:1)

这样做:

<select name="id" required="true" value="<?php echo $row['name']; ?>">
   <?php                         
     $row="SELECT id, name FROM modules";
     while ($row = $stmt->fetch()){
     echo "<option value=\"" . $row['id'] . '|' . $row['name'] . "\">" . $row['name'] . "</option>";
     }
   ?>
 </select>

然后:

list($id,$name) = explode("|",$_GET['id']);
echo $name;

答案 1 :(得分:0)

HTML表单会发送一个选择框的(在这种情况下,它是您的$row['id']),而不是显示文本(在您的情况下为$row['name'])。

如果未指定值,将显示显示文本。如果你想要两者,你可能必须使用Javascript将显示文本分配给选中的隐藏字段,这也将被发布。

这是一个jQuery示例:

<script>
$(document).ready(function() {
    $('#id').change(function() {
        var display_text = $( "#id option:selected" ).text();
        $('#hidden_field').val(display_text);
    });
});
</script>

<select name="id" required="true" value="<?php echo $row['name']; ?>">
... etc

<input type="hidden" name="hidden_field" id="hidden_field">

此示例应将所选选项的显示文本分配给#hidden_field,该文本将与表单的其余部分一起发布,然后在PHP中:

<?php

$selected_value = $_POST['id'];
$selected_display = $_POST['hidden_field'];

?>

答案 2 :(得分:-1)

您必须在选项标记的value属性中包含id和name,由某个字符分隔(如果您确信name和id永远不会包含句点,则可能是'。')。