dongmao7195 2011-06-17 08:26
浏览 49

Php表单 - 停止脚本运行直到单击提交

I have made a simple form which I am going to ask student to complete online.

it consists of a number of fields which will be passed into a mysql database. The form is working fine but the only problem is when I load the page for the first time it tries to submit nothing(as all the fields are empty) to the database and an error comes up which I have set which says you have not completed the required fields

How I can get the script part of my page to run only when the submit button is clicked?

Here is my code

    <! Code to check that the user has logged into to view this page !>
<?php
Code to check for session here
?>
<!Connection details for connecting to mysql database!>
<?php
Info for connection to database
 }

//Select which database you want to connect to
Code to select database here
}
?>
<!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>';
}
  ?>
<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="both.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">Student Name</p>
  <p align="left">

   <! Drop Down Menu to get student names from database !>
   <SELECT NAME=studentName >
<OPTION VALUE=0>
<?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 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'];?>" />
<p align="left">
<br>
<SELECT NAME=grade id=grade>
        <OPTION VALUE="">Grade
        <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>
        <br>
<br>
          Student Reflection:<br>
      <textarea name="studentReflection" cols="100" rows="5"><?php if(isset($_POST['studentReflection'])) echo $_POST['studentReflection'];?></textarea>
  <p align="left">
<p align="left">
<p align="left">
  <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>
      <textarea name="tutorComments" cols="100" rows="5"><?php if(isset($_POST['tutorComments'])) echo $_POST['tutorComments'];?></textarea>
  <p align="left">

      <input type="submit" value="Update Database"  /> 

  <input type='button' value='Logout' onClick="window.location.href='http://138.253.2.72/php_sandbox/optech/dh/current/14june/logout.php'">  
  <p align="left">

</FORM>
<p>  <a href="both.php">Enter another procedure </a>
<p>
  <?php
//Error Message to display if all the correct fields are not completed.
$errorMessage = "This is the standard error message";

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

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

//Code to check that the Student Name field is completed
if(empty($_POST['studentName'])) 
{
echo "You have not selected a student. Please go back and do so!";
exit();
}
//Code to check that the Tutor Name field is completed
if(empty($_POST['tutorName'] ))
{
echo "You did not select a tutor name. Please go back and select your name from the tutors list";
exit();
}
//Code to check that the Procedure field is completed
if(empty($_POST['procedure'] ))
{
echo  "You did not select a procedure. Please go back and enter the name of the procedure which you undertook";
exit();
}
//Code to check that the Grade field is completed
if(empty($_POST['grade'] ))
{
echo "You did not select a grade. Please go back and select your grade from the drop down list";
exit();
}
//Code to check that the Student Reflection field is completed
if(empty($_POST['studentReflection'] ))
{
echo "The student did not enter any comments for this procedure. Student reflection is required for each procedure. Please go back and enter any comments";
exit();
}
//Code to check if the tick box is checked that the tutor comment is entered
if( !strlen($_POST['tutorComments']) && isset($_POST['alert']) ){
    echo "You must enter a comment on the student if you tick the alert box";
    exit();
}

//Code to connect to the database
Database connect code here


$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 : Something fucked up' .mysql_error());


echo "The Database Has been updated. Thanks " ;
?>
</p>
<p>&nbsp;</p>
</body>
</html>
  • 写回答

4条回答 默认 最新

  • drkj41932 2011-06-17 08:32
    关注

    You are missinterpreting PHP. You can't stop the script until the form is submited, since the whole script is run and the result is sent to the users browser. So, you need some mechanism to run only certain parts of the script.

    In the form, insert a hidden field:

    <input type="hidden" name="submited" value="true" />
    

    in your php code, before you try to get the values of the form and save it to the database, check:

    if(isset($_REQUEST['submited'])) {
    
        // your save code goes here
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计