带有html表单的php页面在表单完成之前执行php代码

时间:2014-02-17 16:57:26

标签: php html mysql forms

这可能是一个愚蠢的问题,但我是新手(这是一个家庭作业^^),我找不到解决方案:) 我有一个带有html表单的.php文件以及一些用于执行查询的php代码,并在我的数据库中插入表单中的值。并且它可以工作,但是每次加载页面时都会执行php代码并且在DB中插入一个“空白”行,因为显然表单尚未填充。这是代码

<html>
<head>
  <meta charset="utf-8">
  <meta name="generator" content="AlterVista - Editor HTML"/>
  <title></title>
</head>
<body>

<form action="myPage.php" method="post"> 
ID: <input type="text" name="id" /> <br /> 

<input type="submit" name="Submit" value="Go" /> <br />
</form>

<?php
$user = "DB";
$password = "";
$host = "";
$database = "my_DB";
$connessione = mysql_connect($host, $user, $password);

@mysql_select_db($database, $connessione) or die( "Unable to select database");

$id = $_REQUEST['id'];
$query = "INSERT INTO myTable (ID) VALUES ('".$id."')";
mysql_close();
?>

</body>
</html>

只有在执行表单上的“Go”按钮后才能执行php代码吗?

3 个答案:

答案 0 :(得分:0)

PHP将在呈现页面之前工作。在提交表单之前,您需要设置一个条件来停止您不想运行的PHP。

if(isset($_POST['myform'])) {
    // process the form
}else{
    // html for form goes here
}

希望有所帮助。

答案 1 :(得分:0)

尝试:

if(isset($_POST['Submit']))  {
    $user = "DB";
    $password = "";
    $host = "";
    $database = "my_DB";
    $connessione = mysql_connect($host, $user, $password);

    @mysql_select_db($database, $connessione) or die( "Unable to select database");

    $id = $_REQUEST['id'];
    $query = "INSERT INTO myTable (ID) VALUES ('".$id."')";
    mysql_query($query, $connessione);
    mysql_close();
}

答案 2 :(得分:0)

假设表单指向脚本本身,有很多选项:)其中:

第一个示例只检查表单是否已过帐。如果收到正常(GET)请求,它将不执行任何操作,因为它不会落入您的if子句

// your form here
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    // your php code
}

此示例检查是否已发布名为“Submit”的变量,如果是,则表示其中是否包含值“Go”。这是一个稍微严格的检查,但在你当前的例子中行为是完全相同的(所以你几乎可以选择你最喜欢哪一个;)

// your form here
if(array_key_exists('Submit', $_POST) && $_POST['Submit'] == 'Go') {
    // your php code
}