带有 PHP 的 HTML 表单选择选项,以保持所选值处于活动状态"notice undefined index"



我正在尝试实现一个项目选择下拉列表,该下拉列表将所选值存储到数组中,以便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>

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

试试这个...

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

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

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

您应该将测试更改为:

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

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

还可以使用 if(isset($_POST['customName'])) 来确保它们存在,正如@user1844933所建议的那样。

为了使 PHP 在 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>

相关内容

最新更新