PHP未定义索引
这听起来真的很愚蠢,但我不明白为什么会出现这个错误 我在html表单中创建了一个名为“查询年龄”的选择框:PHP未定义索引,php,html,Php,Html,这听起来真的很愚蠢,但我不明白为什么会出现这个错误 我在html表单中创建了一个名为“查询年龄”的选择框: <form method="get" action="user_list.php"> <select name="query_age"> <option value="">Doesn't matter</option> <option value="between 18 and 30">18 - 30</option
<form method="get" action="user_list.php">
<select name="query_age">
<option value="">Doesn't matter</option>
<option value="between 18 and 30">18 - 30</option>
<option value="between 31 and 40">31 - 40</option>
<option value="between 41 and 50">41 - 50</option>
<option value="between 51 and 60">51 - 60</option>
<option value="between 61 and 70">61 - 70</option>
<option value="between 71 and 80">71 - 80</option>
<option value="between 81 and 90">81 - 90</option>
<option value="> 90">Older than 90</option>
</select>
当我运行页面时,出现以下错误:
注意:未定义索引:第19行index.php中的query_age
我不明白为什么会发生这种情况,我想知道如何让它消失。我没有看到php文件,但可能是-
在php文件中替换:
$query_age = $_GET['query_age'];
与:
很可能,第一次运行脚本时没有
?query\u age=[something]
和$\u GET
没有像query\u age
这样的键。第一次运行页面时,query\u age索引不存在,因为它没有从表单发送过来
当你提交表单时,它就会存在,并且不会抱怨
#so change
$_GET['query_age'];
#to:
(!empty($_GET['query_age']) ? $_GET['query_age'] : null);
在我看来,在分配前检查该成员的出席情况是相当丑陋的 Kohana有一个简单的选择参数的方法 你可以这样做你自己的
function arrayGet($array, $key, $default = NULL)
{
return isset($array[$key]) ? $array[$key] : $default;
}
然后做一些像
$page = arrayGet($_GET, 'p', 1);
如果您使用的isset与singles已经发布的答案类似,只需确保末尾有一个括号,如下所示:
$query\u age=(isset($\u GET['query\u age'])?$\u GET['query\u age']:null);
打印($\u GET)显示了什么?还有其他表单值吗?为什么不使用POST?相应的php表单以何种方式对应于HTML表单?它是否生成HTML表单?它是否处理通过HTML表单提交的值?它只是具有相同的基名称和不同的扩展名吗?请告诉我们。您知道您必须在user\u list.php
中处理表单,因为您在表单操作中指定了这一点?如果您可以发布index.php的相关代码,并解释应用程序的一般“流程”,这会有所帮助。您还应该将“>90”替换为“90”。您还需要检查html本身。请确保您在php脚本中使用了正确的表单属性名称。这只会抑制通知,而不会修复原因。@mario我在下面的代码中解释了原因。作者写道:“当我运行页面时,我得到了这个错误:注意:未定义的索引:query_age in…/index.php,在第19行”,所以我认为,我的答案可以修复它。修复通知!=确定原因。但我并不怀疑它回答了老年退休金计划“让它消失”的问题。然而,实际的问题在别处。如果处理表单的脚本与生成表单的脚本相同,这是个好主意。但在这种情况下,它似乎是两个不同的脚本。当表单的操作是user\u list.php
$query\u age=(isset($\u GET['query\u age'])?:null)时,错误会抛出到index.php
中,只要GET参数的存在对应用程序来说从来都不重要(很少如此)。很好,只有我建议使用匿名函数来控制作用域,并避免出现诸如匿名函数在本例中适用于何处之类的错误?例如$arrayGet=function…这有什么好处?我在上述1)作用域2)重新声明中列出了它们
function arrayGet($array, $key, $default = NULL)
{
return isset($array[$key]) ? $array[$key] : $default;
}
$page = arrayGet($_GET, 'p', 1);