Php Form - Проверка ошибок и вывод - PullRequest
0 голосов
/ 11 июля 2011

Я создал простую форму, в которой есть некоторые обязательные поля, которые, если они не заполнены, возвращают пользователю ошибку, информирующую их о том, что поле является обязательным. Поскольку есть несколько полей, которые проверяются, он может выводить несколько сообщений об ошибках.

Я хочу знать, как я могу определить область в моей форме, где эти ошибки отображаются, поскольку в настоящий момент эти ошибки просто отображаются в нижней части формы, которую вы не увидите, если не прокрутите страницу вниз.

Могу ли я определить, где отображается моя ошибка.

Вот код проверки ошибки: РЕДАКТИРОВАТЬ

  Old code was here

Люди в прошлом предлагали сделать цикл для проверки ошибок по одной, но я новичок в php, поэтому не уверен, как это сделать.

    $errors = '';
    if(empty($_POST['studentName'])) 
    {
    $errors .= "You did not enter the student name<br/>";
    }

//Code to check that the Tutor Name field is completed
    if(empty($_POST['tutorName'] ))
    {
    $errors .="You did not select a tutor<br/>";
    }

//Code to check that the Procedure field is completed
    if(empty($_POST['procedure'] ))
    {
    $errors .="You did not enter a procedure<br/>";
    }
//Code to check that the Grade field is completed
    if(empty($_POST['grade'] ))
    {
    $errors .="You did not enter a grade<br/>";
    }
//Code to check that the Student Reflection field is completed
    if(empty($_POST['studentReflection'] ))
    {
    $errors .="You did not enter a reflection<br/>";
    }
//Code to check if the tick box is checked that the tutor comment is entered
    if( !strlen($_POST['tutorComments']) && isset($_POST['alert'] ))
    {
    $errors .="You must enter a reasan why you ticked the alert box";
    }

//Code to check the password field is completed and correct
    if (empty($_POST['password']))
    {
    $errors .="You did not enter you password";
    }

    if (!empty($_POST['password']))
    {

//==========================================
//  ESCAPE DANGEROUS SQL CHARACTERS
//==========================================
function quote_smart($value, $handle) {

   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }

   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value, $handle) . "'";
   }
   return $value;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST'){

    $masterpass = $_POST['password'];
    $masterpass = htmlspecialchars($masterpass);

    //==========================================
    //  CONNECT TO THE LOCAL DATABASE
    //==========================================
    $user_name = "username";
    $pass_word = "password";
    $database = "name of database";
    $server = "server";

    $db_handle = mysql_connect($server, $user_name, $pass_word);
    $db_found = mysql_select_db($database, $db_handle);

    if ($db_found) {

        $masterpass = quote_smart($masterpass, $db_handle);

        $SQL = "SELECT * FROM masterpass WHERE password = $masterpass";
        $result = mysql_query($SQL);
        $num_rows = mysql_num_rows($result);

    //====================================================
    //  CHECK TO SEE IF THE $result VARIABLE IS TRUE
    //====================================================

        if ($result) {
            if ($num_rows > 0) {
                echo "";
            }
            else {
                $errors .= "Password was not recognised";
                exit();
            }   
        }
        mysql_close($db_handle);

    }
}   
if(!empty($errors))
{
    echo '<div class="errors">' . $errors . '</div>';
    exit();
    }   

}

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Вы могли бы сделать что-то вроде

$errors = '';

if(empty($_POST['studentName'])) 
{
  $errors .= "You did not enter the student name<br />";
}

if(empty($_POST['tutorName'] ))
{
  $errors .= "You did not select a tutor name.<br />";
}

// etc.

и затем над вашим <form> есть

if (!empty($errors))
{
  echo '<div class="errors">' . $errors . '</div>';
}

стиль .errors с CSS, так что он будет выделяться больше. Если $errors выше в логике приложения, вы можете затем выполнить обычное добавление / обновление базы данных и перенаправить на страницу success .

0 голосов
/ 11 июля 2011

echo () ваши ошибки - это то, что добавляет их в конец.Как и предполагал предыдущий ответ, присваивая их строке и распечатывая ее в определенном div (если он не пустой), это делают профессионалы!

Определение ошибок в виде массива также работает и позволяет вам немногоболее детальный контроль над процессом ошибок.

$errors = array();
if(empty($_POST['studentName'])) 
    $errors[] = "You did not enter the student name";

if(empty($_POST['tutorName'] ))
    $errors[] = "You did not select a tutor name.";

//etc...

//At the top of your page.
if (sizeof($errors)>0) {
    echo "<div class='errordiv'>";
    echo "<ul>";
    foreach ($errors as $err) {
        echo "<li>".$err."</li>"; //or whatever format you want!
    }
    echo "</ul></div>";
}

Вы также можете передавать массив ошибок в качестве параметра другим функциям, регистрировать их и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...