在几个页面上回显或携带表单输入信息,然后将数据输入到mysql?

时间:2013-01-28 16:41:02

标签: php html forms session

我正在尝试携带或回显用户放入表单的信息,用户需要完成的3种表单都在不同的页面上,当他们到达第4页时,我需要所有这些信息一起插入mysql数据库。

现在我有我的sql查询,它将数据放入数据库,这输入数据很好,但只放入最后一页上的数据/这是用户完成的最后一个表格。 即使我正在使用值,用户放入早期表单的任何其他先前信息也不会输入到mysql中。

我认为您需要创建一个会话来将数据传输到下一页,所以我试图这样做,但它不起作用:

第1页/表格1:

<?php
session_start();
?>

<form class="" method="post" action="register_p2.php">

                <div class="row first_name">
                    <input type="text" id="first_name" name="first_name" placeholder="First Name" />
                </div>

                <div class="row last_name">
                    <input type="text" id="last_name" name="last_name" placeholder="Last Name" />
                </div>

                <div class="row email">
                    <input type="email" id="email" name="email" placeholder="Email"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

第2页/表格2:

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email'] = $email;
?>

<form name="myForm" method="post" action="register_p3.php" onsubmit="return validateForm()" >

                <div class="row date_of_birth">
                    <input type="text" id="date_of_birth" name="date_of_birth" placeholder="D.O.B 10/02/1990" />
                </div>

                <div class="row number">
                    <input type="text" id="contact_number" name="contact_number" placeholder="Mobile Number" />
                </div>

                <div class="row confirm">
                    <input type="text" id="confirm" name="confirm" placeholder="Are You a UK resident?"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

第3页/ form3:

    <?php
    session_start();
    // other php code here

    $_SESSION['first_name'] = $first_name;
    $_SESSION['last_name'] = $last_name;
    $_SESSION['email'] = $email;
    $_SESSION['dat_of_birth'] = $date_of_birth;
    $_SESSION['number'] = $number;
    ?>

<form class="" method="post" action="register_p4.php">

                <div class="row date_of_birth">
                    <input type="text" id="display_name" name="display_name" placeholder="Display Name" />
                </div>

                <div class="row password">
                    <input type="password" id="password" name="password" placeholder="Password" />
                </div>

                <div class="row password2">
                    <input type="password" id="password2" name="password2" placeholder="Password (Confirm)"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

然后在最后一页上我尝试收集所有类似的信息并将其输入数据库:

<? ob_start(); ?>
<?php
// GET ACCOUNT INFORMATION FROM FORM AND ASSIGN VARIABLES
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$date_of_birth = $_POST['date_of_birth'];
$contact_number = $_POST['contact_number'];
$display_name = $_POST['display_name'];
$password = $_POST['password'];
?>
<?php
/*
// ECHO ACCOUNT INFORMATION
echo "<strong> Account Information: </strong>";
echo "<br />";
echo First Name: ";
echo "<br />";
echo $first_name;
echo "<br />";
echo "<br />";
echo "Last Name: ";
echo "<br />";
echo $last_name;
echo "<br />";
echo "<br />";
echo "Email: ";
echo "<br />";
echo $email;
echo "<br />";
echo "<br />";
echo "Password: ";
echo "<br />";
echo $password;
echo "<br />";
echo "<br />";
echo "date_of_birth: ";
echo "<br />";
echo $date_of_birth;
echo "<br />";
echo "<br />";
echo "Contact_number: ";
echo "<br />";
echo $contact_number;
echo "<br />";
echo "<br />";
echo "display_name: ";
echo "<br />";
echo $display_name;
echo "<br />";
echo "<br />";
*/
?>

3 个答案:

答案 0 :(得分:3)

将表单的所有合并为一个表单。

我发现所有这些信息都在一个表单提交中没有问题。


现在你拥有它的方式意味着(你可以告诉)你需要跟踪之前提交的内容并将其保存在会话文件中。

如果您拥有一个表格中的所有内容,那么您应该没有问题。

如果你想在几个页面上“拆分”,那么你可以使用一些javascript魔术使它看起来好像表格在多个页面上,但实际上只有一个<form>元素,只有不同的字段集仅当用户使用表单的下一部分时才会显示。

答案 1 :(得分:0)

在第二页上,你写了

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;

由于该页面上没有$ first_name,因此您无需覆盖SESSION-vars。所以在最后一页上,之前页面的SESSION变量是空的是正确的。

仅存储 之前页面的变量,它应该可以正常工作。

其他一点:我真的希望你在sql-query中使用它们之前清理你的变量......?

答案 2 :(得分:0)

然而,答案是:

在第2页更改此内容:

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email'] = $email;
?>

为:

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $_POST['first_name'];
$_SESSION['last_name'] =  $_POST['last_name'];
$_SESSION['email'] =  $_POST['email'];
?>

并将第3页上的代码更改为:     

$_SESSION['dat_of_birth'] = $_SESSION['date_of_birth'];
$_SESSION['number'] = $_SESSION['number'];
?>

依此类推,在其他页面上,只需保存$ _SESSION ['varname'] = $ _POST ['varname'];最后,在你的最后一页: 将其更改为: (更新)

<?php ob_start(); ?>
<?php
session_start();
// GET ACCOUNT INFORMATION FROM FORM AND ASSIGN VARIABLES
$first_name = $_SESSION['first_name'];
$last_name = $_SESSION['last_name'];
$email = $_SESSION['email'];
$date_of_birth = $_SESSION['date_of_birth'];
$contact_number = $_SESSION['contact_number'];
$display_name = $_POST['display_name'];
$password = $_POST['password'];
?>

你真的不需要制作$ first_name = $ _SESSION ['first_name'];只是回显$ _SESSION ['first_name'];它节省了记忆......