0

我正在尝试设置一个产品页面,包含多个产品等......它是通过一个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。希望你能明白我的意思,如果你还需要什么,请告诉我。

谢谢

4

1 回答 1

1

很难从您发布的内容中分辨出来,但<form>您的 HTML 中似乎在产品列表之前有一个额外的标签。上面有这个附加<form>标签method="POST"

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

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

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

于 2012-09-02T11:01:20.653 回答