首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php表单-停止脚本运行,直到单击submit

Php表单-停止脚本运行,直到单击submit
EN

Stack Overflow用户
提问于 2011-06-17 16:26:02
回答 4查看 5.7K关注 0票数 1

我已经制作了一个简单的表格,我打算让学生在网上完成。

它由许多字段组成,这些字段将被传递到mysql数据库中。表单工作正常,但唯一的问题是,当我第一次加载页面时,它尝试不向数据库提交任何内容(因为所有字段都是空的),并且出现了一个我设置的错误,指出您没有完成必填字段

如何才能让页面的脚本部分仅在单击submit按钮时运行?

以下是我的代码

代码语言:javascript
复制
    <! 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>
EN

回答 4

Stack Overflow用户

发布于 2011-06-17 16:33:08

如果表单发布数据,您将使用类似于

代码语言:javascript
复制
If($_POST){}

并将您的代码放在大括号内,这将在处理数据之前检测是否有数据发送到页面。但是如果不看你的代码,我就不能告诉你更多了。

票数 2
EN

Stack Overflow用户

发布于 2012-07-05 20:13:02

仅对POST请求运行脚本:

代码语言:javascript
复制
if ( 'POST' === $_SERVER['REQUEST_METHOD'] )
{
    // process the form data
    // print result
}
else
{
    // print form
}
票数 2
EN

Stack Overflow用户

发布于 2011-06-17 16:32:59

你误解了PHP的解释。在表单提交之前,不能停止脚本,因为整个脚本都会运行并将结果发送到用户浏览器。因此,您需要某种机制来仅运行脚本的某些部分。

在表单中,插入一个隐藏字段:

代码语言:javascript
复制
<input type="hidden" name="submited" value="true" />

在php代码中,在尝试获取表单的值并将其保存到数据库之前,请检查:

代码语言:javascript
复制
if(isset($_REQUEST['submited'])) {

    // your save code goes here

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6383200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档