我想在表单中输入1到10之间的数字但是我有一条错误消息:注意:未定义的索引:级别。
我的变量$_GET['level']
不存在?
else if(isset($_GET['level']) && !is_numeric($_GET['level']))
{
$code_error = 2;
$message = "The level must be numeric ! ";
}
else if ($_GET['level'] < 1 || $_GET['level'] > 10 )
{
$code_error = 3;
$message = "The level must be between 1 and 10 ";
}
在HTML中我有这个:
echo '<label for="level">Level : </label>';
if(isset($_GET['level']))
{
echo '<input type="text" id="level" name="level" value="'.$_GET['level'].'" >';
}
else
{
echo '<input type="text" id="level" name="level" >';
}
echo '<input type="submit" value="ok">';
答案 0 :(得分:0)
设置变量$level = $_GET['level'];
并使用它代替$_GET['level']
。
正确的代码是:
$level = $_GET['level'];
echo '<label for="level">Level : </label>';
if(isset($level))
{
echo '<input type="text" id="level" name="level" value="'.$level.'" >';
}
else
{
echo '<input type="text" id="level" name="level" >';
}
echo '<input type="submit" value="ok">';
答案 1 :(得分:0)
您的问题是您在isset
上呼叫$_GET['level']
,这意味着它会尝试评估$_GET['level']
以查找是否已设置。
对于数组元素,您需要使用array_key_exists('level', $_GET)
来查明是否存在元素而不尝试评估它。
在这里查看一些"related discussion"
答案 2 :(得分:0)
在这一行......
else if ($_GET['level'] < 1 || $_GET['level'] > 10 )
就像之前的测试一样,在检查它的数字之前设置了检查,你需要在这里检查它...
else if (isset($_GET['level']) && ($_GET['level'] < 1 || $_GET['level'] > 10 ))
或重构代码......
else if (isset($_GET['level'])) {
if (!is_numeric($_GET['level']))
{
$code_error = 2;
$message = "The level must be numeric ! ";
}
else if ($_GET['level'] < 1 || $_GET['level'] > 10 )
{
$code_error = 3;
$message = "The level must be between 1 and 10 ";
}
}