2013-03-10 56 views
0

这是php代码片段值,以检查一种形式我在PHP recieving的通知,而试图计算的变量

<?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 

我从不确定的变量理解什么是可能variab的局部或全局范围le ...但我在php主代码中使用了这个变量,并在php主代码中再次调用它,这意味着它不在任何函数中,因此它的范围应该是全局的。仍然会得到这个通知,并且我不能检查什么是这个变量的价值?

什么可能是错的家伙?

回答

6

因为你跳过它,你只分配上的其他人:

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 
+0

我在初始化页面的开始时按照你所建议的零值。现在它总是显示零..不管我选择什么选项为var 2,3,4或1 – ashis 2013-03-10 04:00:28

+0

这意味着你但它的条件,可能不符合逻辑。如果您试图获取值'$ var6 = $ var1/100 * $ var2 + $ var3 * $ var4;'。把它放在'else {}'之外,就像普通的赋值一样。 – 2013-03-10 04:02:11

+0

它终于得到了暗示...但在选择的后期...... – ashis 2013-03-10 04:05:28

-1

声明一般都不会太重要,以及是否有只是要提醒你可能出现的一些怪癖,但可能不会。在这种情况下,您可以忽略该通知。

您也可以通过下面的PHP代码禁用通知:

error_reporting(E_ALL^E_NOTICE); 
+0

但仍然,目标是这个变量的输出..它应该回声的价值..它没有这样做也...所以我不知道这个变量是否calcalted值或不,如果它没有回应它.. – ashis 2013-03-10 03:55:45

+0

尝试在计算后在线上回显变量,看它是否有效。如果它回应你所期望的,那么在'$ var4 = 0;'之后初始化这个变量就像这样:'$ var6 = 0;' – 2013-03-10 03:58:27

-1

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

  1. 始终设置$ var6,就像你用$ var1-4
  2. 做就隐藏通知。这是这样完成的:<?PHP echo @ $ var6; ? >
  3. 检查,如果你回声之前$ var6设置:< PHP回声isset($ var6)? $ var6:“Var6没有设置!”; ? >