首页 > 解决方案 > 对多个表单使用多个提交按钮

问题描述

我正在制作将充满大量条目的页面,因此我正在考虑将其拆分为 3 页,并带有上一个和下一个按钮以进行提交。

// detecting post data
<?php
if(isset($_POST["Step1"])){ 
    displayStep1();
}
else if(isset($_POST["Step2"])){ 
    displayStep2();
}
else if(isset($_POST["Step3"])){ 
    displayStep3();
}
// displaying thanks and dumping all variable
else if(isset($_POST["Thanks"])){ 
    displayThanks();
}
else{
    displayStep1();
}

//function to set value of input box with $_POST data
function setValue( $fieldName ){
    if(isset($_POST[$fieldName])){
        echo $_POST[$fieldName];
    }
}
?>
<html>
<body>
<?php
// step 1 form
function displayStep1(){?>
<form method="POST">
    <h1>This is step 1</h1>
    <input type="hidden" name="txtm" values="<?php setvalue("txtm")?>">
    <input type="hidden" name="txtl" values="<?php setvalue("txtl")?>">
    Enter first name<br>
    <input type="text" name="txtf" value="<?php setvalue("txtf")?>"/><br>
    <input type="submit" name="Step2" value="Step2">
</form>
<?php }

//step 2 form
function displayStep2()
{?>
    <form method="POST">
        <h1>This is step 2</h1>
        <input type="hidden" name="txtf" values="<?php setvalue("txtf")?>">
        <input type="hidden" name="txtl" values="<?php setvalue("txtl")?>">
        Enter middle name<br>
        <input type="text" name="txtm" value="<?php setvalue("txtm")?>"><br>
        <input type="submit" name="Step1" value="Step1">
        <input type="submit" name="Step3" value="Step3">
    </form>
    <?php }

// step 3 form
function displayStep3()
{?>
    <form method="POST">
        <h1>This is step 3</h1>
        <input type="hidden" name="txtf" values="<?php setvalue("txtf")?>">
        <input type="hidden" name="txtm" values="<?php setvalue("txtm")?>">
        Enter Last name<br>
        <input type="text" name="txtl" value="<?php setvalue("txtl")?>"><br>
        <input type="submit" name="Step2" value="Step2">
        <input type="submit" name="Thanks" value="Thanks">
    </form>
    <?php }
    
// thanks and dump data
    function displayThanks(){?>
    <h1>Thanks for submitting information</h1><br>
    <?php var_dump($_POST);
}?>
    </body>
    </html>

这段代码应该让我们填写第 1 步,然后在提交时,将进入第 2 步,但有 2 个按钮,第 1 步和第 3 步。但我的问题是,在第 1 步提交数据后,在第 2 步的页面,点击进入步骤1的按钮会回到步骤1,但输入框为空。理论上应该用步骤 1 中的 $_POST 数据填充。

在 vardump 中,只有最后一个要输入的“txtl”的数据。我哪里做错了?

标签: php

解决方案


推荐阅读