代码之家  ›  专栏  ›  技术社区  ›  r4id4

包含html表单的Php页面在表单完成前执行Php代码

  •  2
  • r4id4  · 技术社区  · 11 年前

    这可能是一个愚蠢的问题,但我是新手(这是一个家庭作业^^),我找不到解决方案:) 我有一个.php文件,其中包含一个html表单和一些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 回复  |  直到 11 年前
        1
  •  0
  •   BurningLights    10 年前

    尝试:

    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
  •   lxndr    11 年前

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

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

    希望这会有所帮助。

        3
  •  0
  •   giorgio    11 年前

    假设表单指向脚本本身,则有多种选项:)其中包括:

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