PHP包括提交表单后

时间:2011-05-10 04:36:42

标签: php html forms include submit

对于PHP和表单,我有点像菜鸟,但我会尽力解释。

我要做的是创建一系列包含在内容容器中的表单。用户填写表单#1,单击“提交”并继续填写表单#2,依此类推。每个表单中的数据被发送到下一个表单并存储在隐藏字段中,一旦表单#3完成,数据全部插入到MYSQL数据库中。

到目前为止,这一切都很好。我遇到的问题是我似乎无法让提交按钮按预期工作。我设想的是用户会导航到'blah.com/recruit.php?p=form1'并填写表单#1,然后提交按钮会将他们带到'blah.com/recruit.php?p= form2'等等。

<form id="form" action="recruit.php?p=form2" method="post">

这不起作用,但我不明白为什么。我浏览了一下互联网,我发现了一些讨论类似问题的论坛主题,但没有一个真正详细讨论解决方案或为什么这种方法不起作用。

任何人都可以向我解释一下我做错了吗?我觉得这很明显,但我不能把手指放在上面。

非常感谢,

Splatgore

2 个答案:

答案 0 :(得分:0)

一些工作示例代码可以执行我认为您要实现的目标:

<?php

$p = intval($_GET['p']);

if ($p == 0)
{
    $p = 1; // default to first form
}

if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST')
{
    // get / set all forms values here since subsequent forms will be 
    // posting the previous forms' data via hidden fields
    $first_name = $_POST['first_name'];
    $last_name  = $_POST['last_name'];
    $tel_number = $_POST['tel_number'];

    if ($p == 3)
    {
        // all forms done, insert to MySQL here
    }

    if ($p == 2)
    {
        // form 2's validation

        $p = 3; // set so that the form that follows will now show the 
                // third form
    }

    if ($p == 1)
    {
        // form 1's validation

        $p = 2; // set so that the form that follows will now show the 
                // second form
    }

}
?>
<form id="form" action="recruit.php?p=<?php echo $p; ?>" method="post">
    <h2>Form #<?php echo $p; ?></h2>
    <?php
    if ($p == 1)
    {
    ?>
    <!-- form 1's fields // -->
    <p><label for="first_name">First Name:</label>
    <input type="text" name="first_name" id="first_name" size="40" value="<?php echo $first_name; ?>" /></p>

    <p><label for="last_name">Last Name:</label>
    <input type="text" name="last_name" id="last_name" size="40" value="<?php echo $last_name; ?>" /></p>
    <?php
    }

    if ($p == 2)
    {
    ?>
    <!-- form 2's fields // -->
    <p><label for="tel_number">Tel Number:</label>
    <input type="text" name="tel_number" id="tel_number" size="25" value="<?php echo $tel_number; ?>" /></p>

    <p><input type="hidden" name="first_name" value="<?php echo $first_name; ?>" />
    <input type="hidden" name="last_name" value="<?php echo $last_name; ?>" /></p>
    <?php
    }

    if ($p == 3)
    {
    ?>
    <!-- form 3's fields // -->
    <div>
        <input type="hidden" name="first_name" value="<?php echo $first_name; ?>" />
        <input type="hidden" name="last_name" value="<?php echo $last_name; ?>" />
        <input type="hidden" name="tel_number" value="<?php echo $tel_number; ?>" />
    </div>
    <?php
    }
    ?>

    <p><input type="submit" value="Submit"></p>
</form>

答案 1 :(得分:0)

看起来你有嵌套表格。 这在HTML中是不可能的。

如果你正在使用你的方法,只需使用相同的提交按钮,这将导致相同的PHP脚本。 在php脚本中,检查已设置哪些隐藏字段以查看该过程的进度。

更好的方法IMO很难将数据存储在会话var中,并且总是导致另一个表单页面。