Php 同一页面上的2个表单

Php 同一页面上的2个表单,php,html,forms,Php,Html,Forms,我的studybook给了我一个作业,要求我在一页上有两个表单,并将它们输出到同一页。这可能吗?两种形式都可以独立工作。双方都有以下行动: <?php echo $_SERVER['PHP_SELF']; ?>". ”。 两者都有一个提交按钮,但该按钮只提交它所属的表单。不过这可能是有道理的 问题是,我需要页面在单击2个提交按钮之一时发布两个表单输出,或者随后按下它们,但第一个表单的信息需要保留在页面上 这是可能的,还是我在试图去做不可能的事 形式如下: 表格1: <fo

我的studybook给了我一个作业,要求我在一页上有两个表单,并将它们输出到同一页。这可能吗?两种形式都可以独立工作。双方都有以下行动:

<?php echo $_SERVER['PHP_SELF']; ?>". 
”。
两者都有一个提交按钮,但该按钮只提交它所属的表单。不过这可能是有道理的

问题是,我需要页面在单击2个提交按钮之一时发布两个表单输出,或者随后按下它们,但第一个表单的信息需要保留在页面上

这是可能的,还是我在试图去做不可能的事

形式如下:

表格1:

<form name="orderform" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Korting:
 <tr>
 <td>
 <input type="checkbox" name="korting[]" value=15 /> Student 15% <br>
 <input type="checkbox" name="korting[]" value=10 /> Senior 10% <br>
 <input type="checkbox" name="korting[]" value=5 /> Klant 5% <br>
 <hr />
 </td>
 </tr>
 <tr>
 <td>
 betalingswijze
 <input type="radio" name="betalingswijze" value="paypal"> Paypal
 <input type="radio" name="betalingswijze" value="mastercard"> Mastercard
 <input type="radio" name="betalingswijze" value="visa"> Visa
 <hr />
 </td>
 <tr>
 <td>
    <img src="toshiba.jpg" alt=" " />
 </td>
 </tr>
 <tr>
 <td>
    Toshiba Sattelite A100-510 Basisprijs 999.99
</td>
</tr>
<tr>
<td><!--Shopping Cart Begin-->
    <input type="hidden" name="toshibaproduct" value="001" />
    <input type="hidden" name="toshibamerk" value="toshiba" />
    <input type="hidden" name="toshibamodel" value="Sattelite A100-510" />
    Operating system <select name="toshibaos" value="Toshiba">
    <option value="xp">Windows XP</option>
    <option value="vista">Windows Vista</option>
    <option value="linux">Linux</option>
    </select>
    Aantal: <input type="text" size=2 maxlength=3 name="toshibaaantal" value="0" />
    <input type="hidden" name="toshibaprijs" value="999.99" />

    <input type="image" src="bestel.jpg" border=0 value="bestellen" />
    <hr />

 <tr>
 <td>
    <img src="acer.jpg" alt=" " />
 </td>
 </tr>
 <tr>
 <td>
    Acer Aspire 5735Z Basisprijs 529.99
</td>
</tr>
<tr>
<td>    
    <input type="hidden" name="acerproduct" value="002" />
    <input type="hidden" name="acermerk" value="acer" />
    <input type="hidden" name="acermodel" value="Aspire 5735Z" />
    Operating system <select name="aceros" value="Acer">
    <option value="xp">Windows XP</option>
    <option value="vista">Windows Vista</option>
    <option value="linux">Linux</option>
    </select>
    Aantal: <input type="text" size=2 maxlength=3 name="aceraantal" value="0" />
    <input type="hidden" name="acerprijs" value="529.99" />

    <input type="image" src="bestel.jpg" border=0 value="bestellen" />
    <hr />
    </td><!--Shopping Cart End-->
</tr>
</form>
重复发布

是的,你可以

首先,为所有表单添加适当的操作,其次,给它们一个唯一的名称

HTML端

不要忘记添加您想要的http方法(GET或POST)

注:


使用或来调试交换值的内容

该操作表示将接收发布数据的页面。您可以使用不同的操作或具有不同参数的相同操作。 如果使用相同的操作,则必须插入允许管理不同案例的参数。可以插入隐藏字段来执行此操作

考虑以下简单形式:

<form name="form_a" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="hidden" name="form" value="A">
    <button type="submit">Form A</button>
</form>

<form name="form_b" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
    <input type="hidden" name="form" value="B">
    <button type="submit">Form B</button>
</form>
您不能同时提交两个单独的表单,因为每次提交都代表对服务器的不同请求

您可以手动合并这两个表单的字段,也可以使用Javascript来完成此操作。 请记住,如果通过Javascript执行此操作,表单字段必须具有不同的名称

正如您所看到的,您可以通过jQuery简单地执行以下操作:

var str1 = $("form_a").serialize();
var str2 = $("form_b").serialize();
$.post(url, str1 + "&" + str2);

其中
url
是表单的操作参数

您的表单应该是这样的。
第一种形式

 <form method="post" >
      ... 
   <input type="hidden" name="form1submission" value="yes" >
    <input type="submit" name="submit" value="Submit" >
  </form>
第二种形式的php代码

  if('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['form2submission'])) {
        // second form code. 
   }

就是这样。

是的,这是可能的。你能添加管理表单提交的php代码吗?谢谢你的回答。我已经编辑了hem in。你只需要一个表单并过滤数据。检查表单名称是否为空将不起作用。最好命名提交名称并检查它(或表单的其他特定值)。另外,请阅读关于
$\u SERVER['PHP_SELF'];
用法的说明。您很好,但这是一种反射。在此步骤中,测试一个或一些特定值是不够的(与整个字段名相同-太长)。此时,唯一需要做的是知道是否提交了表单。条件在其中之后。这就是为什么条件的作用域是空的!(我知道php_self,我希望他的练习不会强加这一点)我的观点是,你不能检查
投票减去请,我不能编辑它(sry 10小时堆栈溢出…睡觉时间:D)嗯,我已经改进了,但是我建议删除,重复的原因,这就是我为什么要投票的原因…为了避免初学者阅读错误的代码!不需要检查
isset($\u POST)
,因为它是一个超全局的,并且总是被设置为:-)谢谢!但是这篇文章会同时发布两种形式吗?看起来它只会发布“a”或“B”“。我需要同时张贴两份表格。或者我必须把它们合并成一种形式(我现在说,这听起来很合乎逻辑)。问题是我的studybook要求我使用两个表单,并在同一页上同时输出它们。表单仍然是分开的模块。如果您想发布这两个字段,您需要将字段合并到一个表单中(使用一个提交按钮)。。。或者你可以创建一个javascript函数来合并两个表单的字段并执行一次提交。谢谢Lipsyor!我会把它做成一张表格。我没有足够的javascript经验来合并这两个字段。谢谢您的回复!这将发布两个表单,还是只发布其中一个表单?这将一次发布一个表单。如果没有js,则无法同时提交这两个表单。如果需要同时提交这两个表单,请使用jQuery或原始js函数同时提交。
if(isset($_POST['form'])){

    switch ($_POST['form']) {
        case "A":
            echo "submitted A";
            break;

        case "B":
            echo "submitted B";
            break;

        default:
            echo "What are you doing?";
    } 
} 
var str1 = $("form_a").serialize();
var str2 = $("form_b").serialize();
$.post(url, str1 + "&" + str2);
 <form method="post" >
      ... 
   <input type="hidden" name="form1submission" value="yes" >
    <input type="submit" name="submit" value="Submit" >
  </form>
  <form method="post" >
      ... 
   <input type="hidden" name="form2submission" value="yes" >
    <input type="submit" name="submit" value="Submit" >
  </form>
  if('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['form1submission'])) {
        // first form code. 
   }
  if('POST' == $_SERVER['REQUEST_METHOD'] && isset($_POST['form2submission'])) {
        // second form code. 
   }