在我的代码中,我显示了基于用户学校选择的下拉选择字段列表。例如 - 如果用户从下拉列表中选择“经济学院”,我将在另一个下拉列表中显示相关的通道(基于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帮助
答案 0 :(得分:0)
您需要为每个<select>
元素指定一个唯一的名称,否则具有特定名称的最后一个元素将是您唯一可以访问的元素。 PHP无法确定您所指的5 lane_name
中的哪一个。
要确定选择了哪个选项集,您可以将第一个选项留空:<option value=""></option>
。隐藏/显示DIV时,可以添加一些逻辑以重置为空白选项,因此只有一个lane_names中包含任何数据。
自PHP 5.5.0起,mysql_ *已折旧。您应该考虑切换到mysqli。