【问题标题】:PHP two forms, one pagePHP 两种形式,一页
【发布时间】:2015-05-15 16:59:36
【问题描述】:

所以在学校里,我们正在学习 PHP 中的 OOP,而对于我们的作业,我们需要使用 2 种形式。这是我第一次在一个页面中使用 2 个表单,我一直在尝试弄清楚如何检查正在提交的表单并创建相应的对象。 显然,在查看其他一些问题之后,仅使用 if (!empty($_POST['SubmitButtonName'])) 应该可以工作,但它没有。 希望有人可以帮助我并告诉我我做错了什么:)

PHP:

if (!empty($_POST['sportwgn'])) 
{
    try 
    {
       $sport->Merk = $_POST['merk'];
       $sport->AantalPassagiers = $_POST['AantalPassagiers'];
       $sport->AantalDeuren = $_POST['AantalDeuren'];
       $sport->Stereo = isset($_POST['stereo']) ? true : false;
       $sport->Save();
       $succes= "Uw sportwagen is gereserveerd!";
    }
    catch( Exception $e)
    {
        $error = $e->getMessage();
    }
}
if (!empty($_POST['vrachtwgn'])) 
{
    try 
    {
       $vracht->Merk = $_POST['merk'];
       $vracht->AantalPassagiers = $_POST['AantalPassagiers'];
       $vracht->AantalDeuren = $_POST['AantalDeuren'];
       $vracht->MaxLast = $_POST['MaxLast'];
       $vracht->Save();
       $succes= "Uw vrachtwagen is gereserveerd!";
    }
    catch( Exception $e)
    {
        $error = $e->getMessage();
    }
}

表格:

<form action="" method="post">
        <label for="merk">merk</label>
        <input type="text" id="merk" name="merk">
        <br>
        <label for="AantalPassagiers">Aantal passagiers</label>
        <input type="number" min="2" max="4" id="AantalPassagiers" name="AantalPassagiers">
        <br>
        <label for="AantalDeuren">Aantal deuren</label>
        <input type="number" min="1" max="5" id="AantalDeuren" name="AantalDeuren">
        <br>
        <label for="stereo">Stereo?</label>
        <input type="checkbox" name="stereo" id="stereo" value="stereo"><br>
        <br></div><div class="box">
        <button type="submit" name="sportwgn">Reserveer</button></div>
    </form>

</div>
</div>
<div id="container">
<h1 class="box">Reserveer een Vrachtwagen!</h1>
<div id="content">

    <form action="" method="post">
        <label for="merk">merk</label>
        <input type="text" id="merk" name="merk">
        <br>
        <label for="AantalPassagiers">Aantal passagiers</label>
        <input type="number" min="2" max="4" id="AantalPassagiers" name="AantalPassagiers">
        <br>
        <label for="AantalDeuren">Aantal deuren</label>
        <input type="number" min="1" max="5" id="AantalDeuren" name="AantalDeuren">
        <br>
        <label for="MaxLast">Max last</label>
        <input type="number" min="1" max="5" id="MaxLast" name="MaxLast"><br>
        <br></div><div class="box">
        <button type="submit" name="vrachtwgn">Reserveer</button></div>
    </form>

【问题讨论】:

  • 您可以为每个表单添加隐藏字段并检查此字段是否存在于 $_POST 数组中,而不是您知道发送了哪个表单;
  • 究竟是什么不起作用。它到达哪条线。我假设在实际代码中,您在第二个表单上有结束标记
  • if(isset($_POST['sportwgn'])){
  • @Zaki 我会试试看的。
  • @AntonyD'Andrea 是的,在实际代码中,我有结束标记。问题是表单似乎没有提交。我有第一个表格和第一个 If 语句工作。但是我必须添加第二种形式,并且我需要一个不同的 if 语句,所以我试图弄清楚如何确保第二种形式不使用第一个“如果”(这就是为什么我如果 !empty($_POST['SubmitButtonName'])),则尝试使用按钮名称。如果这有意义?

标签: php forms oop submit


【解决方案1】:

由于您的表单发布在同一页面上 (...action=""...) 将您在 php 端的代码通过提交按钮分为两个操作。 对于带有

的表格
<button type="submit" name="sportwgn">Reserveer</button></div>

使用

if(isset($_POST['sportwgn'])) {
// your code
}

为了

<button type="submit" name="vrachtwgn">Reserveer</button></div>

使用

if(isset($_POST['vrachtwgn'])) {
// your code
}

【讨论】:

  • 这行得通,应该考虑一下哈哈,但非常感谢!
【解决方案2】:

您可以使用if(isset($_POST['buttonName'])) 来检查它是否在帖子值中。

【讨论】:

    【解决方案3】:

    使用action 属性将表单提交到不同的目的地。

    <form action="firstForm.php" method="post">
    ...
    </form>
    
    <form action="secondForm.php" method="post">
    ...
    </form>
    

    并创建 2 个文件用于处理表单发布。

    【讨论】:

      猜你喜欢
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多