html帖子表单在设置操作时不会发送数据

时间:2014-05-08 16:27:40

标签: php html forms

action=""未设置时,表单将发送输入的数据并将其存储在数据库中。

但是,一旦表单提交后我使用action="order.php"重定向,它就不会将数据发送到数据库。

我删除了我没有错过的数据库信息

这是 PHP 代码:

<?php 
session_start();

?>
<?php 
include('inc/header.php'); 
?>

<?php 
include('inc/nav.php'); 
?>


    <div>

    <?php

        if (!empty($_POST))  {

             $db = new PDO('mysql:host=localhost;dbname=;charset=utf8', '', '');

             $stmt = $db->prepare("INSERT INTO user (first_name, last_name, email,                 address_line_1, address_line_2, city, postcode)
     values (?,?,?,?,?,?,?)");


             $first_name  = $_POST["firstname"];
             $last_name = $_POST["lastname"];
             $email = $_POST["email"];
             $address_line_1 = $_POST["address1"];
             $address_line_2 = $_POST["address2"];
             $city = $_POST["city"];
             $postcode = $_POST["postcode"];

             $stmt->bindParam(1, $first_name);
             $stmt->bindParam(2, $last_name);
             $stmt->bindParam(3, $email);
             $stmt->bindParam(4, $address_line_1);  
             $stmt->bindParam(5, $address_line_2);
             $stmt->bindParam(6, $city);    
             $stmt->bindParam(7, $postcode);        

             $success = $stmt->execute();  

             $orderplaced = 'order.php';

             if ($success) { 

             }
             else { 

                 print "not successful"; 
             } 
     }
?>

HTML:

    <form action="order.php" method="post">
        <fieldset>
              <legend> <h2>Checkout</h2></legend>
                  <ul class="checkout">

                      <li><label>First Name: <input type="text" name="firstname" placeholder="Enter your first name" required/></label></li>

                      <li><label>Last Name: <input type="text" name="lastname" placeholder="Enter your last name" required/></label></li>

                      <li><label>Email: <input type="text" name="email" placeholder="Enter your email address" required/></label></li>

                      <li><label>Address Line 1: <input type="text" name="address1" placeholder="Enter your address" required/></label></li>

                      <li><label>Address Line 2: <input type="text" name="address2" placeholder="Enter your address" required/></label></li>

                      <li><label>City: <input type="text" name="city" placeholder="Enter your city" required/></label></li>

                      <li><label>Postcode: <input type="text" name="postcode" maxlength="10" placeholder="Enter your postcode" required/></label></li>

                      <li><input type="submit" name="submit"/> </li>
            </ul>
        </fieldset>
    </form>

    </div>

<?php 
include('inc/footer.php'); 
?>

5 个答案:

答案 0 :(得分:0)

也许我不太了解你的问题,但是如果你的行为重定向到“order.php”,那么必须有你的数据库连接,你必须检查$ _POST并进行插入。

答案 1 :(得分:0)

这是因为将表单存储到数据库的代码部分位于当前位置(似乎不是order.php对吗?)

指定&#34; order.php&#34;你让客户将他的表格发送到这个页面。 你想要的是在保存所有这些数据后重定向。

或者,您可以将访问数据库的部分代码放入&#39; order.php&#39;

答案 2 :(得分:0)

您有两种选择:
1)删除表单的操作并将表单提交给自己,以便将提交的数据保存在DB中,然后将其重定向到order.php

<form action="" method="post">

然后成功

if ($success) { 
   header('location: /order.php');
}

2)将您拥有的所有提交的php部分复制到order.php并按原样

答案 3 :(得分:0)

从第一页复制PHP并将其放在重定向页面上

答案 4 :(得分:0)