2011-04-21 2 views
0

Je suis un débutant à PHP et essaye d'écrire un code, qui forme la validation. Il n'y a rien d'extraordinaire à essayer. Je viens d'écrire une fonction qui teste le texte d'entrée d'âge, que ce soit un nombre ou non. Si ce n'est pas le cas, il stocke une erreur dans un tableau, puis affiche cette erreur dans une autre page. J'ai vu cette méthode dans un tutoriel vidéo, mais je ne pouvais pas le faire moi-même. Quand je tente d'invoquer cette erreur (pas de valeur numérique en âge), il me montre toujours cette erreur dans ma page add.php:PHP question de portée variable

Avis: Undefined variable: erreurs dans/home/rafael/www/RofaCorp/ajouter /add.php à la ligne 37

Comment déclarer une variable accessible via l'ensemble de mon projet?

Voici mon code:

  • 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 (une partie de mon code)

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

Répondre

3

Une variable globale est définie que pendant que vos scripts traitent, dès que vous header("Location: ../add.php"); vous chargez une nouvelle page et toutes les variables Sont perdus. C'est ce que le message d'erreur vous dit, il n'y a pas de variable $errors dans add.php.

Si vous voulez que votre message d'erreur persiste entre différents chargements de pages, un session variable est une bonne option (il y a bien sûr d'autres comme des bases de données, etc.). Il suffit de recommencer la session en add.php et vous avez accès aux variables stockées dans la session.

+0

Merci au sujet de l'indice d'en-tête aussi. – rafael