在提交时插入MySQL数据

时间:2016-04-02 21:43:59

标签: php html mysql sql

我这里有点问题。

数据插入到数据库中,但在打开页面时会插入。

我想在按下提交按钮时插入数据,而不是在页面加载/刷新时插入数据。希望有人可以帮助我!

以下是代码:

<html>
  <head>
  </head>

  <body>
    <h2>Arbeidsliste</h2>

    <div id ="insert">
      <form action="index.php" method="post">
        <p>
          <label for="dato">Dato: </label>
          <input type="date" name="dato" class="field">
        </p>
        <p>
          <label for="start">Start: </label>
          <input type="time" name="start" class="field">
        </p>
        <p>
          <label for="slutt">Slutt: </label>
          <input type="time" name="slutt" class="field">
        </p>
        <p>
          <label for="pause">Pause: </label>
          <input type="number" name="pause" class="field">
        </p>

        <p>
          <input type="submit">
        </p>
      </form>
    </div>
    <?php
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "timer";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 

        $sql = "INSERT INTO meny (dato, start, slutt, pause)
                VALUES ('2016-04-01', '12:00', '20:00', '30')";

        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

        $conn->close();
    ?>
  </body>
</html>

2 个答案:

答案 0 :(得分:3)

if(isset($_POST['submit'])){ 

    // execute query

}

这基于输入相同名称属性和表单的POST方法。

<input type="submit" name="submit" value="Submit">

另外,如果您是通过用户输入获得的,则需要检查empty()字段并使用预准备语句。

编辑:根据你的编辑。

<input type="submit">更改为我上面列出的内容。

空字段的基本检查是:

if(!empty($_POST['dato']) && !empty($_POST['start'])){

    $dato = $_POST['dato'];
    $start = $_POST['start'];

   // execute the query

}

并对其他字段应用相同的逻辑。

哦,只是为了确定......我会在这里添加一些额外的条件:

if(isset($_POST['submit'])){ 

    if(!empty($_POST['dato']) && !empty($_POST['start'])){

        $dato = $_POST['dato'];
        $start = $_POST['start'];

       // execute the query

    }

}

您可以添加标题以重定向。

阅读该功能:

并确保您没有在标头之前输出。如果您收到有关它的警告,请参阅Stack上的以下内容:

或者,如何在PHP中重定向:

您还有另一种选择,即使用两个单独的文件。

一个用于HTML表单,一个用于PHP / MySQL,但在成功查询后仍应使用标题重定向。

  • 令牌/会话是另一种可行的选择。

答案 1 :(得分:0)

如果我正确地解释你的问题,if (isset($_POST['submit'])) { your php code }将会完成这项工作。

<html>
  <head>
  </head>

  <body>
    <h2>Arbeidsliste</h2>

    <div id ="insert">
      <form action="index.php" method="post">
        <p>
          <label for="dato">Dato: </label>
          <input type="date" name="dato" class="field">
        </p>
        <p>
          <label for="start">Start: </label>
          <input type="time" name="start" class="field">
        </p>
        <p>
          <label for="slutt">Slutt: </label>
          <input type="time" name="slutt" class="field">
        </p>
        <p>
          <label for="pause">Pause: </label>
          <input type="number" name="pause" class="field">
        </p>

        <p>
          <input type="submit">
        </p>
      </form>
    </div>
    <?php

 if (isset($_POST['submit'])) {

        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "timer";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 

        $sql = "INSERT INTO meny (dato, start, slutt, pause)
                VALUES ('2016-04-01', '12:00', '20:00', '30')";

        if ($conn->query($sql) === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }

        $conn->close();
}        
?>
  </body>
</html>