页面上有两种形式。用户以第一种形式输入详细信息并提交。然后,该记录将保存在数据库表中。然后,从按钮单击后,我要从已发送到数据库的数据集中设置一个值作为第二种形式的隐藏输入。因此,当用户从第一个表单提交记录时,我将生成一个唯一的ID并将其发送到url。另外,我还将唯一ID保存在数据库表中。然后在写完查询以使用url中的唯一ID从相关表中查找相关数据后,将值设置为第二种形式的隐藏输入。 但是它不起作用,我在这里提供我的代码。 非常感谢。
这是将从第一份表单提交后执行的操作。
<?php
require_once('dbh.inc_2.php');
if (isset($_POST['confirm'])) {
$f_name=$_POST["first_name"];
$l_name=$_POST["last_name"];
$email=$_POST["email"];
$nationality=$_POST["nationality"];
$start_date=$_POST["date_start"];
$type=$_POST["package"];
$heads=$_POST["heads"];
$tot_amount=$_POST["total"];
$payment_amount=$_POST["advance"];
$unique_id = uniqid();
if (empty($f_name) || empty($l_name) || empty($email) || empty($nationality)|| empty($start_date) || empty($type) || empty($heads) || empty($tot_amount) || empty($payment_amount)) {
header("Location: ../book_trip.php?error=emptyfields&please_fill_all_the_fields");
exit();
}
else {
$sql ="INSERT INTO bookings(f_name, l_name, email, nationality, s_date, type, heads, tot_amount, payment, ui) VALUES('$f_name','$l_name','$email', '$nationality', '$start_date', '$type', '$heads', '$tot_amount', '$payment_amount', '$unique_id')";
if (mysqli_query($conn, $sql))
{
$m= "Booking placed";
}
else
{
$m= "Error: " . $sql . "<br>" . mysqli_error($conn);
}
require_once('PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer();
$mail -> isSMTP();
$mail -> SMTPAuth = true;
$mail -> SMTPSecure = 'ssl';
$mail -> Host = 'smtp.gmail.com';
$mail -> Port = '465';
$mail -> isHTML();
$mail -> Username = 'wolfpacksrilanka@gmail.com';
$mail -> Password = 'wolfpack@123';
$mail -> SetFrom('no-reply@howcode.org');
$mail -> Subject = 'Booking Confirmation - WolfPack';
$mail -> Body = 'Thank you for choosing us as your travel partner! We hope to provide you an amazing travel adventure. You will recieve an email shortly with up and down locations and time. ' ;
$mail -> AddAddress($email);
$mail -> Send();
}
}
header("location:../book_trip.php?msg=$m?ui=$unique_id");
这是将唯一ID设置为url上的变量,并使用唯一ID在数据库表中搜索数据:
<?php
require_once 'includes_2/dbh.inc_2.php';
$d_name = "";
if (isset($_GET['ui'])) {
$dbook_id = $_GET['ui'];
$sql = mysqli_query($conn, "SELECT f_name FROM bookings WHERE ui=$dbook_id") or die (mysqli_error($conn));
while ($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)) {
$d_name = $row["f_name"];
} }?>
答案 0 :(得分:1)
在下面的网址中,您忘记了使用?
而不是&
来分隔值参数
header("location:../book_trip.php?msg=$m?ui=$unique_id");
只需将其更改为以下内容即可:
header("location:../book_trip.php?msg=$m&ui=$unique_id");
还要在if (isset($_POST['confirm']))
上方声明所有变量,以便可以在代码中的任何位置使用它。
答案 1 :(得分:1)
如果您使用的是AUTO_INCREMENT字段,则无需生成单独的唯一ID,除非是出于其他原因。 INSERT查询成功后,立即使用以下命令从表中获取新的AUTO_INCREMENT值。
使用程序样式:
$uid = mysqli_insert_id($conn);
或使用面向对象的样式:
$uid = $conn->insert_id;
此外,建议不要使用$ uid到URL,而是建议使用会话-更加安全。
$_SESSION['uid'] = mysqli_insert_id($conn);
//or
$_SESSION['uid'] = $conn->insert_id;
在您的隐藏字段中:
<input type="hidden" name="dest_name" id="dest_name" value="<?= $_SESSION['uid'] ?>">
希望这就是您想要的。