我有多个提交按钮和第二个表单的验证问题

时间:2017-07-12 21:29:42

标签: php html5 forms

所以我提交了两个隐藏的表单。第二种形式的验证无效。任何线索为什么?

    if(isset($_POST['submit'])){
        $feet = $_POST['feet'];
        $lname = $_POST['lname'];   
        if(!is_numeric($feet)){
            $isValid = false;
            $feetError = "Try again buddy"; 
        }
        echo "Hello Captain " . $lname . " Are you" . $feet ."ft tall?";
    }
    elseif(isset($_POST['submit2'])){
        $feet2 = $_POST['feet2'];
        $lname2 = $_POST['lname2'];
        $isValid2 = true;
        if(!is_numeric($feet2)){
            $isValid2 = false;
            $feetError2 = "Try again buddy";    
        }
        echo "Hello Captain " . $lname2 . " Are you" . $feet2 ."ft tall?";
    }
    else{
    ?>
    <form name="formie" id="formie" action="test1.php" method="post">
    <p><label>square feet</label><input type="text" id="feet" name="feet"><span><?PHP echo $feetError; ?></span></p>
    <p><label>Last Name</label><input type="text" id="lname" name="lname"></p>
    <p><button type="submit" name="submit" id="submit">Submit</button></p>
</form>

     <form name="formie2" id="formie2" action="test1.php" method="post">

    <p><label>square feet</label><input type="text" id="feet2" name="feet2"><span><?PHP echo $feetError2; ?></span></p>
    <p><label>Last Name</label><input type="text" id="lname2" name="lname2"></p>
    <p><button type="submit" name="submit2" id="submit2">Submit</button></p>
</form>
<?PHP
    }
    ?>

这些都是占位符BTW。我正在研究的项目要大得多,我只想在我尝试大规模实施之前了解整个“隐藏形式”。 谢谢你们!

2 个答案:

答案 0 :(得分:1)

$isSubmitted = false;
$isValid = true;
$isValid2 = true;
$feetError = '';
$feetError2 = '';

if(isset($_POST['submit'])){
    $isSubmitted = true;
    $feet = $_POST['feet'];
    $lname = $_POST['lname'];   
    if(!is_numeric($feet)){
        $isValid = false;
        $feetError = "Try again buddy"; 
    } else {
        echo "Hello Captain " . $lname . " Are you" . $feet ."ft tall?";
    }
}
elseif(isset($_POST['submit2'])){
    $isSubmitted = true;
    $feet2 = $_POST['feet2'];
    $lname2 = $_POST['lname2'];
    if(!is_numeric($feet2)){
        $isValid2 = false;
        $feetError2 = "Try again buddy";    
    } else {
        echo "Hello Captain " . $lname2 . " Are you" . $feet2 ."ft tall?";
    }
}
?>

<?php if(!$isSubmitted || !$isValid || !$isValid2) { ?>

<form name="formie" id="formie" action="test1.php" method="post">
<p><label>square feet</label><input type="text" id="feet" name="feet"><span><?PHP echo $feetError; ?></span></p>
<p><label>Last Name</label><input type="text" id="lname" name="lname"></p>
<p><button type="submit" name="submit" id="submit">Submit</button></p>
</form>

 <form name="formie2" id="formie2" action="test1.php" method="post">

<p><label>square feet</label><input type="text" id="feet2" name="feet2"><span><?PHP echo $feetError2; ?></span></p>
<p><label>Last Name</label><input type="text" id="lname2" name="lname2"></p>
<p><button type="submit" name="submit2" id="submit2">Submit</button></p>
</form>

<?php } ?>

答案 1 :(得分:-3)

当您提交表单时,PHP会重新加载页面。重新加载页面时,会重新加载以前发布的表单值。因此,假设用户首先提交第一个表格,它将始终触发您的第一个条件。

你有2个解决方案。做单独的脚本,或使用另一个脚本,而不是if - else。我建议使用单独的脚本。

我建议每个表单使用单独的脚本,之后会重定向到您的网站,更容易记住并在之后订购您的作品。