Php $\u POST仅从选择控件接收默认值
我有一个select控件,它将加载到每个用户旁边,根据MySQL数据库的结果,该值默认为该用户所在的楼层。编辑列表的人可以更改用户所在的楼层,并将更改提交到数据库。但是,当我收到$_POST['selFloor']值时,它总是以默认选择的值为准。无论用户是否更改它Php $\u POST仅从选择控件接收默认值,php,html,select,post,Php,Html,Select,Post,我有一个select控件,它将加载到每个用户旁边,根据MySQL数据库的结果,该值默认为该用户所在的楼层。编辑列表的人可以更改用户所在的楼层,并将更改提交到数据库。但是,当我收到$_POST['selFloor']值时,它总是以默认选择的值为准。无论用户是否更改它 <?php $floors = array('1st'=>"First", '2nd'=>"Second", '3rd'=>"Third",
<?php
$floors = array('1st'=>"First",
'2nd'=>"Second",
'3rd'=>"Third",
'4th'=>"Fourth",
'5th'=>"Fifth",
'6th Control'=>"Sixth");
$query = "SELECT * FROM employees ORDER BY name asc";
$result = $db->query($query);
$i = 0;
while ($row = $result->fetch_array())
{
$i++;
echo '<select name="field['.$i.'][floor]"';
foreach($floors as $key=>$val) {
echo ($key == $row['floor']) ? "<option selected=\"selected\" value=\"$key\">$val</option>":"<option value=\"$key\">$val</option>";
}
echo '</select>';
} ?>
选择的HTML输出:
<select name="field[1][floor]">
<option value="1st">First</option>
<option value="2nd">Second</option>
<option selected="selected" value="3rd">Third</option>
<option value="4th">Fourth</option>
<option value="5th">Fifth</option>
<option value="6th">Sixth</option>
</select>
弗斯特
第二
第三
第四
第五
第六
谢谢。我在您的HTML中没有看到任何错误,除了您正在检查$\u POST['selFloor'],而选择的名称是field[1][floor]。尝试将其更改为“selFloor”:
echo '<select name="selFloor">';
...
echo';
...
我看不到select的收尾角括号(
)。因为您的每个
菜单都有一个selected
属性,即使浏览器正在触发change
事件,它也不知道选择了哪一个
尝试仅将选定的属性放置在第一个
上
<?php
foreach($floors as $key=>$val) {
// if first, place selected attribute
echo ($key == $row['floor'])
? "<option value=\"$key\">$val</option>" // selected att was removed
:"<option value=\"$key\">$val</option>";
}
?>
你的标签怎么办?如果每个用户的选择
都被命名为selFloor
,那将是你的问题。什么是$row['floor']?不,它们是单独命名的。我只是将其简化为示例name=“field['.$i.][floor]”
其中$i在每个循环后为$i++,以使每个选择唯一。$row['floor]从以下位置返回:$query=“select*from employees ORDER BY name asc”$结果=$db->query($query);而($row=$result->fetch_array())
这不是它。现在,If语句不执行任何函数,因为每个echo之间没有差异。而且楼层不一定总是第一层,可能是第二层到第六层。如果左回音与地板匹配,则左回音提供选定属性,而右回音不匹配。因为只有一个参数与楼层相等,所以两边都不应用选定的参数。
<?php
foreach($floors as $key=>$val) {
// if first, place selected attribute
echo ($key == $row['floor'])
? "<option value=\"$key\">$val</option>" // selected att was removed
:"<option value=\"$key\">$val</option>";
}
?>