Php:Form返回表单


Php: Form returns form

我有一个单选按钮表单,它为每个特定选项返回特定类型的表单。我从第二个中获得的数据将用于在数据库中搜索。我的问题是,如果我在第二个表单中提交数据时对两个表单都使用post方法,我会注意到我对第一个表单没有这样做,因为每次加载页面时,我的代码都会验证变量是否为空。我能在PHP中做些什么,这样服务器就可以区分表单,而不会在每次通过post提交数据时进行检查?我尝试命名提交按钮,但似乎不起作用。在数据库中搜索的代码——它写在另一个文件中,并且正在工作。提前谢谢。

<!doctype html>
<html>
<body>
<?php
// define variables and set to empty values
$optiuneErr="";
$optiune="";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
   if (empty($_POST["optiune"]))
     {$optiuneErr= "Selectati optiunea";}
   else
     {$optiune = test_input($_POST["optiune"]);}
}
?>
<?php
$numeErr=$anErr=$regiuneErr=$succesorErr=$predecesorErr="";
$nume=$an=$regiune=$succesor=$predecesor="";
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (empty($_POST["nume"]))
     {$numeErr= "Introduceti numele";}
   else
     {$nume = test_input($_POST["nume"]);}
     if (empty($_POST["an"]))
     {$anErr = "Introduceti anul";}
   else
     {$an = test_input($_POST["an"]);}
     if (empty($_POST["regiune"]))
     {$regiuneErr = "Introduceti regiunea";}
   else
     {$regiune = test_input($_POST["regiune"]);}
     if (empty($_POST["succesor"]))
     {$succesorErr = "Introduceti succesorul";}
   else
     {$succesor = test_input($_POST["succesor"]);}
     if (empty($_POST["predecesor"]))
     {$predecesorErr = "Introduceti predecesorul";}
   else
     {$predecesor = test_input($_POST["predecesor"]);}
}
function test_input($data)
{
     $data = trim($data);
     $data = stripslashes($data);
     $data = htmlspecialchars($data);
     return $data;
}
?>
<p><span class="error">* Selectati un camp.</span></p>
<form method="post" > 
<input type="radio" name="optiune" value="1" />Cauta dupa nume <br />
<input type="radio" name="optiune" value="2" />Cauta dupa an<br />
<input type="radio" name="optiune" value="3" />Cauta dupa regiune<br />
<input type="radio" name="optiune" value="4" />Cauta dupa succesor<br />
<input type="radio" name="optiune" value="5" />Cauta dupa predecesor<br />
<input type="submit" name="submit1" value="Alege" />
<span class="error"> <?php echo $optiuneErr;?></span>
</form>
<?php
switch($optiune)
{
    case 1:
        echo '
        <p><span class="error">* Introduceti o valoare.</span></p>
        <form method="POST">
        Nume: <input type="text" name="nume"><br>
        <input type="submit" value="Cauta" />
        <span class="error"> <?php echo $numeErr;?></span>
        </form>';
        break;
    case 2:
        echo '
        <p><span class="error">* Introduceti o valoare.</span></p>
        <form method="POST" >
        An: <input type="text" name="an"><br>
        <input type="submit" value="Cauta" />
        <span class="error"> <?php echo $anErr;?></span>
        </form>';
        break;
    case 3:
        echo '
        <p><span class="error">* Introduceti o valoare.</span></p>
        <form method="POST">
        Regiune: <input type="text" name="regiune"><br>
        <input type="submit" value="Cauta" />
        <span class="error"> <?php echo $regiuneErr;?></span>
        </form>';
        break;
    case 4:
        echo '
        <p><span class="error">* Introduceti o valoare.</span></p>
        <form method="POST">
        Succesor: <input type="text" name="succesor"><br>
        <input type="submit" value="Cauta" />
        <span class="error"> <?php echo $succesorErr;?></span>
        </form>';
        break;
    case 5:
        echo '
        <p><span class="error">* Introduceti o valoare.</span></p>
        <form method="POST">
        Predecesor: <input type="text" name="predecesor"><br>
        <input type="submit" value="Cauta" />
        <span class="error"> <?php echo $predecesorErr;?></span>
        </form>';
        break;
}
?>
</body>
</html>

您应该使用isset()函数。

if (isset($_POST['submit1']))
{
if (empty($_POST["optiune"]))
 {$optiuneErr= "Selectati optiunea";}
else
 {
    if(isset($_PoST['nume']))
    {
       $nume = test_input($_POST["nume"]);
    }
    else if($_POST['an'])
    {
      ///////some checking code/////
    }
    ////and so on for all individual forms///
  }
}

第二种形式是这样的。