【问题标题】:Php page with html form inside execute php code before form is completed带有html表单的php页面在表单完成之前执行php代码
【发布时间】:2014-02-17 16:57:26
【问题描述】:

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

<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 代码?

【问题讨论】:

  • 这正是应该发生的事情:php 工作 before 页面被渲染
  • 是的,我想 xD,但是有一种方法可以在“发生”之后执行一段 php 代码? (如完成表格)
  • 检查是否设置了$_POST['Submit'] 例如
  • 您可以使用 die() 语句来阻止代码再次执行,建议将处理脚本(连接、插入)保存在单独的文件中

标签: php html mysql forms


【解决方案1】:

试试:

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】:

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

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

希望对您有所帮助。

【讨论】:

    【解决方案3】:

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

    第一个示例仅检查是否已发布表单。如果收到一个普通的(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
    }
    

    【讨论】:

    • 我都试过了。第一个仍然执行,第二个从不执行;(我在 之后粘贴了它
    猜你喜欢
    • 2012-06-26
    • 2016-03-18
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    • 2016-12-21
    • 2013-01-21
    • 2017-05-20
    • 1970-01-01
    相关资源
    最近更新 更多