« Maravillas de los lenguajes computacionales... | Main | 6to Encuentro Linux »

Solución a los FORMs anidados en HTML

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

Guillo:

Pues a mi esto me acaba de servir bastante. Me ahorró un buen rato de dar vueltas por la web. Muchas gracias

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on Julio 13, 2005 6:53 PM.

The previous post in this blog was Maravillas de los lenguajes computacionales....

The next post in this blog is 6to Encuentro Linux.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.35