2011-06-27 136 views
0

我創建了一個表單,其中有多個字段可以發佈到數據庫中。PHP表單 - 錯誤信息存儲

在窗體底部,我設置了一些簡單的錯誤檢查以確保所有必填字段都完整。

當用戶點擊提交按鈕時,我的錯誤檢查發生,如果有錯誤,它會輸出一個字符串,它會遇到錯誤。

這些錯誤當前顯示在表單下方,但我希望它們出現在表單域上方。無論如何,我可以做到這一點?

如果我明顯地移動表單字段上方的錯誤檢查代碼,它不起作用,因爲它在任何字段完成之前檢查錯誤。

任何想法,我可以做到這一點?

下面是代碼

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> 
+1

請提供你的代碼的相關部分。 – Bjorn

回答

0

不應該有讓您的錯誤校驗碼「上面」的形式渲染代碼的任何問題。一旦表單已經提交,大概通過POST,你的數組中有所有表單變量($_POST數組),並且無論您是否決定重新呈現表單,都可以使用它們。

+0

我已經嘗試添加我的代碼上面,但因爲有一個退出聲明,當我把它放在我的表單上只是退出並不顯示窗體,只有窗體後的內容(鏈接)。 – Mattrsa

0

您可以隱藏字段在您的形式,例如

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

然後,在你的檢查程序,首先要檢查是否$ _ POST [ 'isSubmitted'(或$ _GET [ 'isSubmitted'] )== 1如果這是真的,那麼你知道用戶已經提交了你的表單,並且你可以進行額外的檢查