2011-04-21 160 views
0

我是PHP的初學者,並試圖編寫一個代碼,它確實表單驗證。 只是對它進行測試而已。我只寫了一個測試年齡輸入文本的函數,不管它是否爲數字。如果不是,則會在數組中存儲錯誤,然後在另一個頁面中顯示該錯誤。我在視頻教程中看到了這種方法,但是我自己做不到。當我嘗試調用的錯誤(在年齡不是數值),它總是顯示我這個錯誤在我add.php頁面:PHP變量範圍問題

注意:未定義的變量:錯誤在/ home /拉斐爾/ WWW/RofaCorp /加/add.php on line 37

我該如何聲明一個可以通過我的整個項目訪問的變量?

這裏是我的代碼:

  • form_validation.php
<?php 

function validate_number($number) { 
    global $errors; 
    if (is_numeric($number)) { 
     return $number; 
    }else { 
     $errors[] = "Value must be number";   
    } 

    if (!empty ($errors)) 
    { 
     header("Location: ../add.php"); 
     exit; 
    } 
} 

?> 
  • create_ind.php

    <?php require_once '../../include/connection.php'; ?> 
    <?php require_once '../../include/form_validation.php'; ?> 
    <?php require_once '../../include/functions_database_infoget.php'; ?> 
    
    <?php 
    $family_id = get_family_info_fam("id"); 
    $ind_name = mysql_real_escape_string($_POST["ind_name"]); 
    $age = validate_number(mysql_real_escape_string($_POST["age"])); 
    $gender = $_POST["gender"]; 
    $notes = mysql_real_escape_string($_POST["notes"]); 
    
    
        $add_query = "INSERT INTO individual 
           (g_id , ind_name , age , gender , notes) 
           Values ({$family_id} , '{$ind_name}' , {$age} , '{$gender}' ,  '{$notes}')"; 
         if(mysql_query($add_query , $connection)){ 
         header("Location: ../../main.php"); 
         exit; 
        } else {echo "ERROR " . mysql_error() ; } 
    
    
    
    ?> 
    
    <?php mysql_close($connection); ?> 
    
  • add.php(我的代碼的一部分)

    <!--Main Content--> 
    <section id="mainContent"> 
        <header> 
         <h3>Select where to add new Family/Individual.</h3> 
        </header> 
        <article> 
         <?php 
          if (count($errors) > 0) { 
           for($i=0 ; $i < count($errors) ; $i++){ 
            echo "{$errors[$i]}" . "<br/>"; 
           } 
          } 
         ?> 
        </article> 
    </section> 
    

回答

3

在您的腳本處理的全局變量只被定義,只要你做header("Location: ../add.php");您加載新的一頁,所有變量迷路了。這就是錯誤信息告訴你的,add.php中沒有變量$errors

如果你希望你的錯誤信息,以不同的網頁加載期間堅持,一個session variable是一個不錯的選擇(當然還有其他類似數據庫等)。只需在add.php中重新開始會話,並且您可以訪問會話中存儲的變量。

+0

謝謝了。 – rafael 2011-04-21 21:34:18