繁体   English   中英

提交表单后包含PHP

[英]PHP Includes after submitting a form

关于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">

这行不通,但是我不明白为什么。 我环顾了互联网,发现了一些讨论类似问题的论坛主题,但实际上没有一个主题详细介绍该解决方案或为什么这种方法行不通。

谁能告诉我我做错了什么吗? 我觉得这很明显,但是我不能把手放在上面。

非常感谢,

蛇蝎

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

<?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>

您似乎以某种方式嵌套了表格。 在HTML中这是不可能的。

如果您采用自己的方法,只需使用始终使用相同的提交按钮即可生成相同的php脚本。 在php脚本中,检查已经设置了哪些隐藏字段,以查看该过程有多远。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM