未定义的索引:级别

时间:2018-06-16 16:37:37

标签: php

我想在表单中输入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">'; 

3 个答案:

答案 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 ";
    }    
}