Вопрос о переменной области PHP - PullRequest
0 голосов
/ 22 апреля 2011

Я новичок в PHP и пытаюсь написать код, который проверяет форму.Ничего особенного, только проверяя это.Я только что написал функцию, которая проверяет текст ввода возраста, независимо от того, является ли он числом или нет.Если это не так, он сохраняет ошибку в массиве, а затем отображает эту ошибку на другой странице.Я видел этот метод в видео-учебнике, но сам не смог.Когда я пытаюсь вызвать эту ошибку (не числовое значение в Age), она всегда показывает эту ошибку на моей странице add.php:

Примечание: неопределенная переменная: ошибки в / home / rafael / www /RofaCorp / add / add.php в строке 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); ?>
    
  • доп.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>
    

Ответы [ 2 ]

3 голосов
/ 22 апреля 2011

Глобальная переменная определяется только во время обработки ваших скриптов, как только вы делаете header("Location: ../add.php");, вы загружаете новую страницу и все переменные теряются.Это то, о чем говорится в сообщении об ошибке: в add.php. *1003*.

нет переменной $errors. Если вы хотите, чтобы ваше сообщение об ошибке сохранялось при разных загрузках страницы, переменная сеанса это хороший вариант (есть, конечно, другие, такие как базы данных и т. д.).Просто запустите сеанс снова в add.php, и у вас есть доступ к переменным, сохраненным в сеансе.

1 голос
/ 22 апреля 2011

Если это показано на другой странице, используйте сеансы. Позволит вам получать переменные с других страниц.

Вы можете использовать этот простой tut http://www.tizag.com/phpT/phpsessions.php

...