使用单个提交处理多个表单

时间:2012-09-02 10:19:44

标签: php javascript jquery html

我正在尝试设置一个产品页面,有多个产品等...它是通过while循环从mysql数据库获取数据,产品显示正常,但我遇到的问题是我想要能够单独处理每个产品,换句话说,我不知道哪些产品可能出现在页面上,所以当我尝试通过php处理它们时,它需要灵活。它有点难以解释,但这是我目前的代码,希望你会看到我的意思。

以下是我个人产品的html,所有产品都像下面的代码一样得到了充实

 <form id="<?php print "$material_id";?>" class="form">    
      <div class="supp_bro_mat_wrap">    
            <input type="hidden" name="supp_bro_mat_id" value="<?php print "$material_id";?>" />        
            <input name="supp_bro_qty_input" class="supp_bro_qty_input" type="text" />              
      </div><!---end supp_bro_input_wrap--->
            <input name="supp_bro_add_to_cart" type="submit" class="supp_bro_add_to_cart" id="<?php print "$material_id";?>" />          
 </form>

这是php代码,简单我知道,但我只想在这个阶段获得价值,

 if (isset($_POST['supp_bro_add_to_cart'])) {


    $mat_id = $_POST['supp_bro_mat_id'];
    $mat_qty = $_POST['supp_bro_qty_input'];

    var_dump($mat_id);
    var_dump($mat_qty);
}

当我尝试输入第一个产品的数量时,我会看到正确的var_dumps,但是当我尝试下面的所有产品时,我得到了

supplies_browse.php?supp_bro_mat_id=5&supp_bro_qty_input=8768&supp_bro_add_to_cart=Submit

出现在我的浏览器标题中而不是

supplies_browse.php?sid=masonary

喜欢它应该没有var_dumps。希望你能理解我的意思,如果你还需要其他任何东西,请告诉我。

由于

1 个答案:

答案 0 :(得分:1)

从您发布的内容中判断并不容易,但看起来您的HTML中有一个额外的<form>标记位于产品列表之前。这个额外的<form>代码上有method="POST"

因此,在您的产品列表中,忽略了第一个产品的<form>标记(不允许嵌套表单元素),因此提交第一个产品会执行POST提交,因此数据会获得在HTTP正文中传输,URL具有您想要的值,并且您的$_POST变量可以正确填充。

第一个产品末尾的</form>标记会关闭其他<form>,第二个产品和后续产品会以自己的形式创建。这些<form>标签没有指定方法属性,因此使用默认方法GET。这将发送有关URL的信息,该信息不会填充$ _POST变量。

解决方案是从页面开头删除其他<form>标记,并将method="POST"属性(以及可能是该标记上的任何其他属性)移动到<form>中的每一个}标签的产品。