html表单选择选项与PHP保持选定值激活“通知未定义索引”

时间:2014-01-18 11:57:20

标签: php html forms

我正在尝试实现项目选择下拉列表,该列表将所选值存储到数组中,以便php处理查询。

使用此:

<select name="FLexA" width="300" style="width: 30%">    
    <option value=" "> </option>
    <option value="1" <?= $_POST['FLexA'] == "1" ? 'selected' : '' ?>>Selection item 1...</option>
    <option value="2" <?= $_POST['FLexA'] == "2" ? 'selected' : '' ?>>Selection item 2...</option>
    </select>

在FlexA上返回“注意:未定义的索引...”

虽然使用通知错误处理程序“@”如下所示工作正常,但我记得,当我第一次在没有@错误处理程序的表单上使用它时它没有工作。

<select name="FLexA" width="300" style="width: 30%">
<option value=" "> </option>
<option value="1" <?= @$_POST['FLexA'] == "1" ? 'selected' : '' ?>>Selection item 1...</option>
<option value="2" <?= @$_POST['FLexA'] == "2" ? 'selected' : '' ?>>Selection item 2...</option>
</select>

即使我到达了我需要的地方,有人可以提出建议吗,我想了解幕后背后是什么。

4 个答案:

答案 0 :(得分:2)

试试这个......

 if(isset($_POST['FLexA'])) { 
   //your code
 }

答案 1 :(得分:2)

如果您使用此脚本显示初始表单并处理表单提交,则$_POST变量仅在用户提交表单时设置。当他第一次进入页面时,他没有提交任何内容,因此没有$_POST变量,并且您会收到有关未定义索引的警告。

如果之前没有发生这种情况,有人可能会更改php.ini中的错误报告设置,以便现在显示通知。

您应该将测试更改为:

isset($_POST['FlexA']) && $_POST['FLexA'] == "1"

答案 2 :(得分:1)

使用<?php?>打开和关闭php标记

同样使用if(isset($_POST['customName']))确保它们存在,如@ user1844933所示。

答案 3 :(得分:0)

为了使您的PHP-in-HTML更简洁,您可以考虑创建一个函数:

<?php
function selected($key, $val){
    if(array_key_exists($key, $_POST)){
    print(($_POST[$key] == $val) ? " selected" : "");
    return true;
    }
return false;
}
?>

<select name="FLexA" width="300" style="width: 30%">    
    <option value=" "> </option>
    <option value="1"<?php selected("FLexA", "1"); ?>>Selection item 1...</option>
    <option value="2"<?php selected("FLexA", "2"); ?>>Selection item 2...</option>
</select>