Hace algún tiempo, me vi en la tarea de realizar un sistema de "carrito de compras" típico.
Dentro del desarrollo, me topé con el siguiente problema:
Quería introducir un listado mediante campos <OPTION> y <SELECT>
, los cuales estaban dentro de un <FORM>
y asi actualizar el contenido de la pagina con un onchange();
de cualquiera de las opciones...
El problema se da, que cuando uno quiere enviar esa información del formulario, para ser procesada, lo lógico a pensar, es que uno haga otro form encima de ese y que tenga un action distinto... Lo cual nos lleva a descubrir algo que no está muy bien documentado en Internet:
Los FORMs anidados en HTML no son validos y por lo tanto no funcionarán!
Una vez que esto le queda a uno claro y deja de jugar a ponerle nombres distintosa los forms e inventar y re-inventar nombres, es que uno se da cuenta que tienes 3 soluciones (al menos estas encontré yo):
- Replantear el problema: Si llegaste al punto en que necesitas tener 2 FORMs anidados, significa que tu modelo está malo.. Asi de simple. Está malo y tienes que re-plantearlo desde 0... Quizás debería o pasar por un FORM primero y luego por otro. O tal vez todo deba estar en un solo FORM
- Ocupar un ticket de verificación: Se puede agregar un nuevo campo hidden o un check-button, que permita realizar otras acciones al procesar los datos. Esta solución es a mí parecer la más sencilla.
- Manejar variables de sesion: Esta forma, requiere un poco más de conocimiento del lenguaje utilizado para procesar el FORM (Ya sea PHP, o algún otro bellaco, como ASP)... Se trata que al momento de actualizar la página, ver si se hicieron cambios en las variables anteriores (guardadas en una sesión) y compararlas con las nuevas. Luego, al momento de hacer el click en el botón SUBMIT, se debe introducir una variable hidden que referencie que no se hagan más cambios y se procesen los datos.
Eso... ojalá le sirva a alguien, pq a mí me costó entenderlo en su momento.
Escuchando: "I got the power" de Puff Daddy & The Lox
Comments (2)
Wenas wenas!!!, como estamos compaire, oe viejo, necesito contactarme contigo...cual es tu correo???, enviamelo a edsiper arroba gmail punto com
nos leemos!
bytes!
Edsiper.-
Posted by Eduardo Silva | Julio 16, 2005 9:30 AM
Posted on Julio 16, 2005 09:30
Pues a mi esto me acaba de servir bastante. Me ahorró un buen rato de dar vueltas por la web. Muchas gracias
Posted by Guillo | Agosto 8, 2005 12:39 PM
Posted on Agosto 8, 2005 12:39