簡體   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