0

这是检查表单的 php 代码片段

<?php
include_once("includes/form_functions.php");
$var1 = 0; 
$var2 = 0; 
$var3 = 0; 
$var4 = 0; 
if(isset($_POST['submit'])) // checks if submit button is clicked of form
{
    if(isset($_POST['rdvar1']))
    {
        $var5 = $_POST["rdvar1"];
        if($_POST["rdvar1"] == "RJ")
        {
            $var1 = 20;
            $var2 = 15;
        }
        else
        {
            $var1 = 5;
            $var2 = 10;
        }           
    }
    if(isset($_POST['rdvar3']))
    {
        $var3 = $_POST["rdvar3"];
    }
    if(isset($_POST['rdvar4']))
    {
        $var4 = $_POST["rdvar4"];
    }
              elseif()
    {
               // many else if validation goes here 
              } 
        else
    {
        // some more internal validations
        $var6 = $var1/100 * $var2 + $var3 * $var4; // here i calculated var6 

            if(empty($message))
            {
            // db insert query  
                  }
    }
}
?> // php tag ends

// html website starts here
<!DOCTYPE html>
<html lang="en">

// somewhere down in html page i used

<?php
echo $var6
?>
// rest of html code and form

我所有的表单代码都很好,所有的 html 都很好,我想我做的所有 php 也很好..

当我运行此代码时,网页上会不断发出通知

 Notice: Undefined variable: var6 in C:\wamp\www\aaa\calc.php on line 478

我对未定义变量的理解可能是变量的局部或全局范围......但我在 php 主代码中使用了这个变量并在 php 主代码中再次调用它,这意味着它不在任何函数内,所以它的范围应该是全局的。 . 仍然收到此通知,我无法检查此变量的价值是什么?

伙计们可能有什么问题?

4

3 回答 3

6

因为您跳过了它,所以您只分配了 else:

if (condition) {
    // !! whatever here is executed
}
else
{
    // !! and this does not
    // some more internal validations
    $var6 = $var1/100 * $var2 + $var3 * $var4; // here i calculated var6 

        if(empty($message))
        { // db insert query }
}

您放入的条件未执行,您可以尝试捕获值或改进 if 条件。

要完成通知并删除错误,您需要像其他脚本一样在脚本顶部初始化;

$var1 = 0; 
$var2 = 0; 
$var3 = 0; 
$var4 = 0; 
$var6 = 0; // <-- init this too
于 2013-03-10T03:55:49.883 回答
-1

通知通常并不太重要,只是为了警告您一些可能发生但可能不会发生的怪癖。在这种情况下,您可以忽略通知。

您还可以使用以下 PHP 代码禁用通知:

error_reporting(E_ALL ^ E_NOTICE);
于 2013-03-10T03:54:06.967 回答
-1

您的代码只是没有设置 $var6 的值。您的选择是:

  1. 始终设置 $var6,就像您使用 $var1-4 一样
  2. 只是隐藏通知。这样做是这样的: <?PHP echo @$var6; ?>
  3. 在回显之前检查是否设置了 $var6: <?PHP echo isset($var6) ? $var6 : "Var6 未设置!"; ?>
于 2013-03-10T04:00:25.053 回答