2012-01-03 14 views
50

Estoy creando una página con los productos vendidos en el sitio web. Me gustaría incluir un botón de "añadir al carro" cerca de cada producto, que están en la lista con el formato similar a este:¿Múltiples formas o envíos múltiples en una página?

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

Dado que el presente entradas tendrán diferentes nombres (con el código del producto incluido) , la gran pregunta es: ¿debo incluir toda la lista de productos en un formulario, o debo crear un formulario para cada producto? En código:

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

O ...

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

¿Cuál es la mejor práctica? ¿Alguna razón seria para no usar una u otra, o lo estoy haciendo completamente mal?

Respuesta

83

Mejor práctica: una forma por producto es definitivamente el camino a seguir.

Beneficios:

  • que le ahorrará la molestia de tener que analizar los datos para averiguar qué se ha hecho clic producto
  • se reducirá el tamaño de los datos de ser publicado

En su situación específica

Si solo tiene la intención de tener un elemento de formulario, en este caso un botón submit, un formulario para todos debería funcionar bien.


Mi recomendación hacer un formulario para cada producto, y cambiar su margen de beneficio a algo como:

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

Esto le dará un mucho más limpio y utilizable POST. Sin análisis. Y le permitirá agregar más parámetros en el futuro (tamaño, color, cantidad, etc.).

Nota: No hay beneficio técnico a utilizar <button> vs <input>, pero como programador me resulta más fresco para trabajar con action=='add_to_cart' de action=='Add to Cart'. Además, odio mezclar presentación con lógica. Si un día decide que tiene más sentido que el botón diga "Agregar" o si desea utilizar diferentes idiomas, puede hacerlo libremente sin tener que preocuparse por su código de fondo.

+0

Gracias Ayman. Algunos comentarios: con respecto al punto uno, ¿no tendré que analizar los datos de todos modos? Serán formas múltiples con la misma "acción". Y en el punto 2, solo se enviará un envío, por lo que el tamaño POST debería ser el mismo en ambos casos, ¿verdad? – winck

+0

Muchas gracias Ayman! ¡Desafortunadamente puedo votar solo una vez! Mis mejores deseos – winck

+0

@winck, En su caso, tiene razón en ambos aspectos. Sin embargo, en el momento en que agregue un segundo campo a su formulario, mi recomendación tendrá más sentido. –

Cuestiones relacionadas