简体   繁体   中英

PHP Form - Error Message Placements

I have created a form which has a number of fields which I am posting to a database.

At the bottom of the form II have set some simply error checking to make sure all the required fields are complete.

When the user clicks the submit button my error checking take place and if there are errors it will output a string with the errors which it encountered.

These errors are currently displayed below the form but I want them to appear above the form fields. Is there anyway I can do this?

If I move the error checking code above the form field obviosly it does not work as it checks for errors before any of the field have been completed.

Any ideas how I can do this?

Here is the code

enter code here
<! Code to check that the user has logged into to view this page !>
<?php
session_start();
if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) {
header ("Location: login.php");
}
?>
<!Connection details for connecting to mysql database!>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Op Tech Database - Add Record</title>
</head>
<!Code to Create drop down menu's!>
<?php
//Code for collectiing values for Student Names drop down drop
$result1=mysql_query("SELECT studentID, studentName FROM students");
$options1="";
while ($row=mysql_fetch_array($result1)) {

    $id=$row["studentID"];
    $first=$row["studentName"];

    $options1.="<OPTION VALUE=\"$first\">".$first.'</option>';
    }

//Code for getting tutors names in drop down list
$result2=mysql_query("SELECT staffID, tutorName FROM staff");

$options2="";
while ($row=mysql_fetch_array($result2)) {

    $id=$row["staffID"];
    $first=$row["tutorName"];

    $options2.="<OPTION VALUE=\"$first\">".$first.'</option>';
}


  if(isset($_REQUEST['submited'])) {

$errorMessage = "This is the standard error message";

$options1 = $_POST['studentName'];
$options2 = $_POST['tutorName'];
$procedure = htmlspecialchars($_POST['procedure']);
$grade = $_POST['grade'];
$studentReflection = htmlspecialchars($_POST['studentReflection']);
$professionalism = $_POST['professionalism'];
$communication = $_POST['communication'];
$tutorComments = htmlspecialchars($_POST ['tutorComments']);


/*if(empty($_POST['alert']))
{
$_POST['alert'] = "NO";
}
*/
$alert = $_POST['alert'] ;

$studentNameError = "You did not enter the student name";

$error = false;
if(empty($_POST['studentName'])) 
{
$studentNameError = "You did not enter the student name";
echo "<h3> $studentNameError </h3>";
$error = true;
}
//Code to check that the Tutor Name field is completed
if(empty($_POST['tutorName'] ))
{
echo "<h3>You did not select a tutor name.</h3>";
$error = true;
}
//Code to check that the Procedure field is completed
if(empty($_POST['procedure'] ))
{
echo  "<h3>You did not select a procedure.k</h3>";
$error = true;
}
//Code to check that the Grade field is completed
if(empty($_POST['grade'] ))
{
echo "<h3>You did not select a grade.</h3>";
$error = true;
}
//Code to check that the Student Reflection field is completed
if(empty($_POST['studentReflection'] ))
{
echo "<h3>The student did not enter any comments for this procedure. Student reflection is required for each procedure. </h3>";
$error = true;
}
//Code to check if the tick box is checked that the tutor comment is entered

if( !strlen($_POST['tutorComments']) && isset($_POST['alert'] ))
{
    echo "<h3>You must enter a reason why you have clicked the alert box</h3>";
    $error = true;
}
if($error)
{
    exit();
}

  ?>
<body>
<link rel="stylesheet" type="text/css" href="ex1.css" >
<link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />
<!Create HTML elements!>
<form name="myform" form method="post">
  <h1 align="center"><a href="form.php"><img src="colour_logo_400.jpg" alt="University Logo" width="400" height="185" /></a></h1>
  <h1 align="center">Dental Hygiene Operative Technique Database</h1>
  <h2 align="center">Welcome to the Dental Hygiene Operative Technique Database v1</h2>
  <p align="left">&nbsp;</p>
  <p align="left">Student Name(*)</p>
  <p align="left">
   <! Drop Down Menu to get student names from database !>
    <SELECT NAME=studentName >
        <OPTION VALUE=0 selected="selected" >
            <?php if(isset($_POST['studentName'])) echo $_POST['studentName'];?>
        <?php echo $options1?>
    </SELECT>  

  <p align="left">Tutor Name  
  (*)<p align="left"> 
    <! Drop Down Menu to get tutor names from database !>
    <select name=tutorName>
        <option value=0>
            <?php if(isset($_POST['tutorName'])) echo $_POST['tutorName'];?>
      <?php echo $options2 ?> </option> 

    </select>
  <p align="left">
  <p align="left"><br>


    Procedure(*)
      <input type="text" name="procedure"  value="<?php if(isset($_POST['procedure'])) echo $_POST['procedure'];?>" />
    <select name=grade id=grade>
      <option value="">Grade </option>
      <option value="N" <?php if (isset($_POST['grade']) && $_POST['grade'] == "N") { echo 'selected="selected"';} ?>>N</option>
      <option value="B" <?php if (isset($_POST['grade']) && $_POST['grade'] == "B") { echo 'selected="selected"';} ?>>B</option>
      <option value="C" <?php if (isset($_POST['grade']) && $_POST['grade'] == "C") {   echo 'selected="selected"';} ?>>C</option>
    </select>
    (*)
  <p align="left">

 Student Reflection:
        (*)<br>
        <textarea name="studentReflection" cols="75" rows="5"><?php if(isset($_POST['studentReflection'])) echo $_POST[             'studentReflection'];?></textarea>
  <p align="left">
        <SELECT NAME=professionalism>
          <OPTION VALUE="">Professionalism
          <OPTION VALUE="U" <?php if (isset($_POST['professionalism']) && $_POST['professionalism'] == "U") {
      echo 'selected="selected"';} ?>>U</option>
          <OPTION VALUE="S" <?php if (isset($_POST['professionalism']) && $_POST['professionalism'] == "S") {
      echo 'selected="selected"';} ?>>S</option>
          <OPTION VALUE="E" <?php if (isset($_POST['professionalism']) && $_POST['professionalism'] == "E") {
      echo 'selected="selected"';} ?>>U</option>
        </SELECT>
        </SELECT>

      <SELECT NAME=communication>
        <OPTION VALUE="">Communication
        <OPTION VALUE="U" <?php if (isset($_POST['communication']) && $_POST['communication'] == "U") {
      echo 'selected="selected"';} ?>>U</option>
        <OPTION VALUE="S" <?php if (isset($_POST['communication']) && $_POST['communication'] == "S") {
      echo 'selected="selected"';} ?>>S</option>
        <OPTION VALUE="E" <?php if (isset($_POST['communication']) && $_POST['communication'] == "E") {
      echo 'selected="selected"';} ?>>U</option>
    </SELECT>

        Alert:
        <input type="checkbox" value="YES" name="alert" >  
        <br>
        <br>
        Tutor Comments:
        <br>
        <br>
<textarea name="tutorComments" cols="75" rows="5">
<?php if(isset($_POST['tutorComments'])) echo $_POST['tutorComments'];?></textarea>
  <p align="left">


<!Submit buttons for the form!>

  <input type="submit" name="mattbutton" class="mattbutton" value="Update Database"  name="submit"/> 
  <input type='button' name="mattbutton" class="mattbutton" value='Logout' onClick="window.location.href='logout.php'">  
  <input type="hidden" name="submited" value="true" />
  <p align="left">
    <?php

//Code to turn off error reporting
//error_reporting(0);

//Error Message to display if all the correct fields are not completed.



//Code to connect to the database


$query= "INSERT INTO entry (entryID, studentName , tutorName , procedureName , grade , studentReflection , tutorComments,  professionalism , communication , alert  ) VALUES ('NULL', '".$options1."' , '".$options2." ' , '".$procedure."' , '".$grade."' , '".$studentReflection."', '".$tutorComments."' , '".$professionalism."' , '".$communication."' , '".$alert."'  )";


mysql_query($query) or die ('Error : You are attempting to enter information which cannot be stored or contains code. Please refesh the from and try again<br>' .mysql_error());


echo "<h3>The Database Has been updated. Thanks </h3></b>" ; 
}
?>
</FORM>
<p>  <a href="form.php">Enter another procedure </a>
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>

There shouldn't be any problem having your error checking code "above" the form rendering code. Once the form has been submitted, presumably via POST, you have all of the form variables in an array (the $_POST array) and they can be used regardless of whether or not you decide to re-render the form or not.

You can make a hidden field in your form, for example

<input type="hidden" name="isSubmitted" value ="1">

Then, in your checking routines, you first check if $_POST['isSubmitted'] (or $_GET['isSubmitted']) == 1 If it's true, then you know that user have been submitted your form, and you can make your additional checks

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM