Multiple Forms or Multiple Submits in a Page?

送分小仙女□ 提交于 2019-11-26 09:27:43

问题


I\'m creating a page with the products sold in the website. I\'d like to include an \"add to cart\" button near each product, which are listed with markup similar to this:

<h4 class=\"productHeading\">Product Name 1</h4>
<div>
  Extra information on the product 1.
</div>
<h4 class=\"productHeading\">Product Name 2</h4>
<div>
  Extra information on the product 2.
</div>
 ...

Since the submit inputs will have different names (with the code of the product included), the big question is: should I wrap the entire product list in a form, or should I create one form for each product? In code:

<form method=\"post\" action=\"process.php\">
  <h4 class=\"productHeading\">Product Name 1</h4>
  <div>
    Extra information on the product 1.
    <input type=\"submit\" name=\"submit1\" value=\"Add to Cart\">
  </div>
  <h4 class=\"productHeading\">Product Name 2</h4>
  <div>
    Extra information on the product 2.
    <input type=\"submit\" name=\"submit2\" value=\"Add to Cart\">
  </div>
</form>

Or…

<h4 class=\"productHeading\">Product Name 1</h4>
<div>
  Extra information on the product 1.
  <form method=\"post\" action=\"process.php\">
    <input type=\"submit\" name=\"submit1\" value=\"Add to Cart\">
  </form>
</div>
<h4 class=\"productHeading\">Product Name 2</h4>
<div>
  Extra information on the product 2.
  <form method=\"post\" action=\"process.php\">
    <input type=\"submit\" name=\"submit2\" value=\"Add to Cart\">
  </form>
</div>

Which one is best practice? Any serious reason not to use one or the other, or am I doing it completely wrong?


回答1:


Best practice: one form per product is definitely the way to go.

Benefits:

  • It will save you the hassle of having to parse the data to figure out which product was clicked
  • It will reduce the size of data being posted

In your specific situation

If you only ever intend to have one form element, in this case a submit button, one form for all should work just fine.


My recommendation Do one form per product, and change your markup to something like:

<form method="post" action="">
    <input type="hidden" name="product_id" value="123">
    <button type="submit" name="action" value="add_to_cart">Add to Cart</button>
</form>

This will give you a much cleaner and usable POST. No parsing. And it will allow you to add more parameters in the future (size, color, quantity, etc).

Note: There's no technical benefit to using <button> vs. <input>, but as a programmer I find it cooler to work with action=='add_to_cart' than action=='Add to Cart'. Besides, I hate mixing presentation with logic. If one day you decide that it makes more sense for the button to say "Add" or if you want to use different languages, you could do so freely without having to worry about your back-end code.



来源:https://stackoverflow.com/questions/8712398/multiple-forms-or-multiple-submits-in-a-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!