当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');
?>
答案 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)