2012-01-03 42 views
50

Tôi đang tạo trang có các sản phẩm được bán trên trang web. Tôi muốn đưa vào một nút "thêm vào giỏ hàng" gần mỗi sản phẩm được liệt kê với đánh dấu tương tự như sau:Nhiều biểu mẫu hoặc nhiều lần gửi trong một trang?

<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> 
... 

Kể từ khi nộp đầu vào sẽ có tên gọi khác nhau (với mã của sản phẩm bao gồm) , câu hỏi lớn là: tôi nên bọc toàn bộ danh sách sản phẩm trong một biểu mẫu hay tôi nên tạo một biểu mẫu cho từng sản phẩm? Trong mã:

<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> 

Hoặc ...

<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> 

Cái nào là thực hành tốt nhất? Bất kỳ lý do nghiêm trọng nào không sử dụng cái này hay cái kia, hay tôi làm nó hoàn toàn sai?

Trả lời

83

Thực tiễn tốt nhất: một hình thức cho mỗi sản phẩm chắc chắn là cách để đi.

Lợi ích:

  • Nó sẽ giúp bạn tiết kiệm những rắc rối của việc phải phân tích các dữ liệu để tìm ra sản phẩm được nhấp
  • Nó sẽ làm giảm kích thước của dữ liệu được đăng

Trong trường hợp cụ thể của bạn

Nếu bạn chỉ có ý định có một phần tử biểu mẫu, trong trường hợp này là nút submit, một biểu mẫu cho tất cả sẽ chỉ hoạt động tốt.


Tôi đề nghị Thực hiện một hình thức cho mỗi sản phẩm, và thay đổi đánh dấu của bạn để một cái gì đó như:

<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> 

này sẽ cung cấp cho bạn một trình dọn dẹp nhiều và có thể sử dụng POST. Không phân tích cú pháp. nó sẽ cho phép bạn thêm nhiều thông số hơn trong tương lai (kích thước, màu sắc, số lượng, v.v.).

Lưu ý: Không có lợi ích kỹ thuật để sử dụng <button> vs <input>, nhưng như một lập trình viên tôi thấy nó mát để làm việc với action=='add_to_cart' hơn action=='Add to Cart'. Bên cạnh đó, tôi ghét pha trộn thuyết trình với logic. Nếu một ngày bạn quyết định rằng nó có ý nghĩa hơn cho các nút để nói "Thêm" hoặc nếu bạn muốn sử dụng các ngôn ngữ khác nhau, bạn có thể làm như vậy một cách tự do mà không cần phải lo lắng về mã back-end của bạn.

+0

Cảm ơn Ayman. Một số nhận xét: về điểm một, tôi sẽ không phải phân tích cú pháp dữ liệu sao? Nó sẽ có nhiều hình thức với cùng một "hành động". Và ở điểm 2, chỉ có một lần gửi sẽ được gửi, vì vậy kích thước POST sẽ giống nhau trong cả hai trường hợp, phải không? – winck

+0

Cảm ơn rất nhiều Ayman! Thật không may tôi có thể bỏ phiếu chỉ một lần! Lời chúc tốt nhất – winck

+0

@winck, Trong trường hợp của bạn, bạn đúng với cả hai tính. Tuy nhiên, lần thứ hai bạn thêm trường thứ hai vào biểu mẫu của mình, đề xuất của tôi sẽ có ý nghĩa hơn. –

Các vấn đề liên quan