PHP - Multiples formularios en una sola pagina php

 
Vista:

Multiples formularios en una sola pagina php

Publicado por SSR (1 intervención) el 19/06/2014 14:02:39
Hola amigos, estoy realizando una tienda y todos los productos de una categoría se muestran en una misma pagina php y cada uno tiene su campo nombre,descripción,precio que los llamo de la base de datos. También incluye el formulario un campo cantidad,para que el cliente introduzca la cantidad y el boton enviar.

Eso que os he descrito sería para cada producto, por ejemplo 6 productos en una misma pagina php. Para mostrar los formularios lo hago con php en función del número de registros que tenga de esa categoría pues muestro tantos formularios como registro para cada producto.

Para controlar la entrada de datos del campo cantidad que solo sea numeros enteros, nada de letras ni decimales, ni numeros negativos, lo hago a través de un patron en javascript y una pregunta de confirmación para añadir el producto al carrito.

El problema es que solo funciona correctamente la validación javascript sobre el primer formulario, y no entiendo el porque ya que todo lo hago sobre el mismo campo que tiene nombre e id la palabra cantidad.

¿Alguien me podría decir como podría solucionar este problema o como puedo enfocar el hacer varrios formularios independientes para cada articulo con su campo cantidad y enviar independientes unos de otros en la misma pagina php?

Gracias de antemano.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas
Val: 34
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Multiples formularios en una sola pagina php

Publicado por Vainas (262 intervenciones) el 20/06/2014 19:45:16
Buenas:

Este tema no es javascript.... pero bueno igual te doy una solucion:

Podrias hacer uso de el evento change del input para saber si ha cambiado el valor, esto para empezar.

El tema es que tienes que a cada input que almacena la cantidad dentro de cada form tendria que tener su propia funcion para comprobar si el valor es positivo o negativo. El tema es que eso no es nada automatizado. Se puede crear una unica funcion que sepa en que formulario se encuentra y compruebe el input de ese formulario. Aqui entra en javascript el uso de this. El tema es que llamando a una unica funcion, ella sepa donde esta por el this.

Jquery tiene la ventaja de usar funciones para movernos por las clases, los id's, las etiquetas padres de una etiqueta, las hijas, etc....

fijate en este ejemplo que he hecho:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Demo de varios formularios</title>
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
	<p>Demo con varios formularios</p>
	<form class="comprobar" action=""><input type="text" value="1" class="cantidad"><span class="error"></span></form>
	<form class="comprobar" action=""><input type="text" value="2" class="cantidad"><span class="error"></span></form>
	<form class="comprobar" action=""><input type="text" value="3" class="cantidad"><span class="error"></span></form>
	<form class="comprobar" action=""><input type="text" value="4" class="cantidad"><span class="error"></span></form>
	<form class="comprobar" action=""><input type="text" value="5" class="cantidad"><span class="error"></span></form>
</body>
<script>
	$(document).ready(function() {
		$(".cantidad").change(function (){
			console.log($(this).val());
		if(parseInt($(this).val()) < 0){
			$(this).parent().find(".error").html("ERROR");
		}else{
			$(this).parent().find(".error").html("");
		}
		}).change();
});
</script>
</html>

Asignamos a todos los inputs una funcion en su evento change. esa funcion juega con el valor this como puedes ver. He agregado un ejemplo de parent() para que veas como puedes subir a la etiqueta padre y desde alli volver a buscar solo los elementos que tengan la clase error.

Espero que te sirva.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar