因为显示/隐藏而得到错误的POST值

时间:2014-04-20 20:35:44

标签: javascript php html mysql

在我的代码中,我显示了基于用户学校选择的下拉选择字段列表。例如 - 如果用户从下拉列表中选择“经济学院”,我将在另一个下拉列表中显示相关的通道(基于mysql查询)。

为了做到这一点,我有5个div,在蚀刻学校上:

<div id='a'>
<span><label>Lane</label></span>
<?php
        $sql = "SELECT lane_name FROM lane WHERE `lane_school_id` = 1 ORDER BY `lane_name` ASC";
        $result = mysql_query($sql);

        echo "<select name='lane_name'>";
        while ($row = mysql_fetch_array($result)) {
            echo "<option value='" . $row['lane_name'] ."'>" . $row['lane_name'] ."</option>";
        }
        echo "</select>";

?>
</div>

<div id='b'>
<span><label>Lane</label></span>
<?php

        $sql = "SELECT lane_name FROM lane WHERE `lane_school_id` = 2 ORDER BY `lane_name` ASC";
        $result = mysql_query($sql);

        echo "<select name='lane_name'>";
        while ($row = mysql_fetch_array($result)) {
            echo "<option value='" . $row['lane_name'] ."'>" . $row['lane_name'] ."</option>";
        }
        echo "</select>";

?>
</div>

我有一个听众,当用户选择学校并隐藏所有其他'lane'div时,显示正确的'lane'div:

        $(document).bind('pageinit', '#indexPage',  function(){
            $("#a").show();
            $("#b").hide();
            $("#c").hide();
            $("#d").hide();
            $("#e").hide();


            //this will call our toggleFields function every time the selection value of School field changes
            $("#school").change(function () {
                toggleFieldsA();
                toggleFieldsB();
                toggleFieldsC();
                toggleFieldsD();
                toggleFieldsE();
            });

        });

        function toggleFieldsA() {
            if ($("#school").val() == 'School of Economics'){
                $("#a").show();

            }
            else
                $("#a").hide();   
        }

        function toggleFieldsB() {
            if ($("#school").val() == 'School of Computer Science')
                $("#b").show();         
            else
                $("#b").hide();
         }

问题:当用户提交表单时,我从POST数组中得到错误的'lane_name'。我正在获取最后一个学校选择的车道值(对用户隐藏)而不是用户选择的车道名称,PLZ帮助

1 个答案:

答案 0 :(得分:0)

您需要为每个<select>元素指定一个唯一的名称,否则具有特定名称的最后一个元素将是您唯一可以访问的元素。 PHP无法确定您所指的5 lane_name中的哪一个。

要确定选择了哪个选项集,您可以将第一个选项留空:<option value=""></option>。隐藏/显示DIV时,可以添加一些逻辑以重置为空白选项,因此只有一个lane_names中包含任何数据。

自PHP 5.5.0起,mysql_ *已折旧。您应该考虑切换到mysqli