Foros del Web » Programando para Internet » PHP »

Dos formularios en una misma página

Estas en el tema de Dos formularios en una misma página en el foro de PHP en Foros del Web. Hola a tod@s, estoy implementando una página con dos formularios. El primero contiene una serie de campos que filtran una consulta y, tras pulsar un ...
  #1 (permalink)  
Antiguo 03/01/2011, 08:20
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Dos formularios en una misma página

Hola a tod@s,

estoy implementando una página con dos formularios. El primero contiene una serie de campos que filtran una consulta y, tras pulsar un botón, muestra la información consultada a la base de datos.
El código del primer formulario es:

<form name="FiltraArticulos" method="POST" action="">
<input type="hidden" name="logo" value="<?=$_GET['logo'] ?>">
... selects y textfileds
</form>


Este formulario funciona perfectamente y, en el action, carga la misma ventana donde está ubicado.

Ahora bien, no sé muy bien como implementar el segundo formulario.
El primero me muestra una serie de artículos y, en el segundo, tengo un botón para insertar los seleccionados en la base de datos. Es decir, que quiero que el usuario pueda seleccionar los artículos mostrados y almacenarlos en una tabla.
Pero no sé muy bien cómo implementar esto. Quiero que no cambie de ventana y que, en todo momento, el usuario mantenga la vista de artículos filtrados en pantalla. ¿Es posible evitar la recarga de la página tras pulsar el botón: "Añadir"?.
¿Dónde implemento el insert del artículo en la tabla?

Espero haber sido claro.

Un saludo.
  #2 (permalink)  
Antiguo 03/01/2011, 09:00
 
Fecha de Ingreso: enero-2003
Mensajes: 38
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Dos formularios en una misma página

lo que puedes hacer es usar AJAX, esto te permite realizar acciones sin tener que recargar la página, investiga sobre XAJAX O JQUERY que son frameworks que te dan ese potencial.

Ahora para realizar esto, necesitas una página con los formularios y otra que procese la información enviada por ajax.

Es una pequeña idea para que comiences a desarrollar.

Saludos.
  #3 (permalink)  
Antiguo 03/01/2011, 09:40
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Dos formularios en una misma página

Ajax?. La verdad es que no he hecho nada con Ajax.
¿Habría alguna forma de implementar dos formularios en una misma página, sin intención de cambiar a otra al hacer POST, sólo con php?
  #4 (permalink)  
Antiguo 03/01/2011, 09:47
 
Fecha de Ingreso: enero-2003
Mensajes: 38
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Dos formularios en una misma página

lamentablemente no conozco otra forma de hacerlo, los formularios funcionan de esa forma, al momento de hacer el "submit" envías los datos a otra página para ser procesados, mientras que con ajax y un "buttom" solo desencadenas una acción en javascript para que ella se encargue de enviar los datos, que sean procesados y esperar los resultados de ese proceso.

insisto, quizas la mejor solución es ejax.
  #5 (permalink)  
Antiguo 03/01/2011, 09:50
 
Fecha de Ingreso: enero-2003
Mensajes: 38
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Dos formularios en una misma página

lo olvidaba, tu problema es: ¿como realizo acciones sin salir de la página?

lo lamento, pero ajax fue echo para eso, php solo procesa y envía los resultados al navegador una vez que ya están procesados, no hay otro tipo de interacción.

saludos.
  #6 (permalink)  
Antiguo 03/01/2011, 09:56
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: Dos formularios en una misma página

Si es algo sencillo, no te compliques: utiliza Iframes
  #7 (permalink)  
Antiguo 03/01/2011, 10:00
 
Fecha de Ingreso: enero-2003
Mensajes: 38
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Dos formularios en una misma página

Cita:
Iniciado por mariomon17 Ver Mensaje
Si es algo sencillo, no te compliques: utiliza Iframes
los iframes te permiten colocar páginas dentro de otras, en este caso necesitaras hacer 3 : formulario 1 - formulario 2 - y la que contendrá los formularios, pero no te permitirá la interacción entre ellas.
  #8 (permalink)  
Antiguo 03/01/2011, 10:22
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: Dos formularios en una misma página

Si ademas utiliza JavaScript para recargar el otro iframe y pasarle parametros por GET lo podra conseguir.
  #9 (permalink)  
Antiguo 03/01/2011, 11:20
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Dos formularios en una misma página

Muchas gracias por los consejos,

la verdad es que nunca he utilizado ninguna de las dos técnicas.
Pero creo que probaré con Ajax, aunque no tengo idea alguna de cómo hacerlo.

Espero que no sea muy complicado. La verdad es que sólo quiero hacer un insert de un artículo seleccionado en una lista.
Cada vez que el usuario pulsa el botón, se introduce el artículo seleccionado en la base de datos y se mantiene la página tal cual.
Imagino que ya no se usará un form.

Empezaré con google ;).
  #10 (permalink)  
Antiguo 03/01/2011, 12:02
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Dos formularios en una misma página

No me estoy enterando mucho. A ver si alguien me puede ayudar con un pequeño código de ejemplo sobre estos puntos:

La página muestra una tabla de artículos y el usuario puede pulsar sobre los nombres para ver la imagen asociada a cada uno. Una vez seleccionado un artículo:

Dos dudas:

1. Quiero que se active el botón añadir que, inicialmente debería estar desactivado. Me gustaría implementar esto con php pero no sé cómo averiguar si el usuario ha seleccionado un artículo o no. Automáticamente, los nombres mostrados son enlaces que cargan la imagen asociada, pero debería habilitar una variable semáforo para que yo pudiera saber si el usuario ha pulsado o no un enlace para habilitar el botón "añadir". ¿Cómo haría esto?
¿Cómo puedo almacenar el valor true o 1 a una variable cuando el usuario hace click sobre un enlace?

2. Una vez habilitado el botón Añadir, me interesa que, si es pulsado, se genere un "insert" en la tabla de la BD con el id del artículo. Este id lo tengo almacenado en una variable. ¿Alguien puede indicarme una función sencilla hecha en Ajax para realizar el insert tras pulsar el botón?

Sería añadir al onclick el nombre de esta función hecha en Ajax, ¿no?
<input class=BtnNuevo TYPE='submit' VALUE='Añadir' onclick()=insertaArticulo>

Es que he usado poco el javascript y con esto no me aclaro mucho ;(
  #11 (permalink)  
Antiguo 03/01/2011, 12:23
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Dos formularios en una misma página

Debes entender que para habilitar y deshabilitar un botón en el navegador de tu cliente sólo puedes hacerlo por javascript, pues php trabaja del lado del servidor.

Como ya te mencionaron, tienes 2 opciones, mediante ajax (en mi opinion la mejor forma), pudiendo hacerlo con xajax, que es muy fácil de implementar y aprender.
O con Iframes, pero en ambas formas debes aprender lo básico de javascript.
  #12 (permalink)  
Antiguo 03/01/2011, 13:46
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 19 años
Puntos: 1
Respuesta: Dos formularios en una misma página

Ok.

si veo que con Ajax no me aclaro mucho, igual intento almacenar en una variable los id's de los artículos seleccionados y realizar un único Insert cuando el usuario salga de la página o pulse un nuevo botón con ánimo de finalizar el proceso.

Haría un submit, sí, pero sería sólo uno y al final.

Gracias de todas formas por aclararme la forma.

Un saludo.

Etiquetas: dos, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:03.