Mattrsa
Mattrsa

Reputation: 45

Php Form - Stop Script running untill submit is clicked

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>

Upvotes: 1

Views: 6380

Answers (4)

Rukmi Patel
Rukmi Patel

Reputation: 2561

You can give name & value to your submit button. Say name= "submit" value ="submit"

and put your all php code which you want to execute after button is clicked

if($_REQUEST['submit'] =='submit' && isset($_REQUEST['submit'])){
  //php code
}

this will work fine to you

Upvotes: 0

fuxia
fuxia

Reputation: 63566

Run the script on POST requests only:

if ( 'POST' === $_SERVER['REQUEST_METHOD'] )
{
    // process the form data
    // print result
}
else
{
    // print form
}

Upvotes: 2

Sascha Galley
Sascha Galley

Reputation: 16091

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

}

Upvotes: 1

Tom Walters
Tom Walters

Reputation: 15616

If the form posts the data you would use something like

If($_POST){}

And place your code within the curly braces, this detects if any data is being sent to the page before processing it. But without seeing your code I can't tell you much else.

Upvotes: 2

Related Questions