Lun Mar 20, 2006 11:52 am
|
 |
slopal
Perlero Nuevo

|
Registrado: 23 Nov 2005
Mensajes: 78
|
|
| Paso de datos de un cgi a otro (en este caso) |
|
|
Hola.. tengo un script que genera una pagina html donde "monta" una tabla tipo:
AA 3 [x]
AT 2 [x]
CC 3 [x]
CG 1 [x]
donde [x] es un boton tipo "submit"
cada submit tiene que llamar a un cgi q abrirá otra ventana del navegador y mostrará "otras cosas" en html.
----------
al principio de mi primer cgi (el que crea la tabla) tengo puesto
| Código: |
| print "<form action=\"http://gralggen.lsi.upc.es/cgi-bin/freq/graphic.cgi\" target=\"_blank\" method=\"POST\" ENCTYPE=\"multipart/form-data\">"; |
para definir que los botones tienen que llamar a graphic.cgi
hasta aqui supongo que bien..
----------
la tabla la creo con un bucle que va haciendo las partes html (td, tr... y pintando los campos y creando cada boton).
antes de crear el botón envío unos datos "ocultos" tipo
| Código: |
print"<input type=\"hidden\" name=\"freq\" value=\"$f\">";
....;
...;
print"<input name=\"$tup_most\" value=\" X \" type=\"submit\">\n"; # el boton
|
------
PROBLEMA: Cuando genero la tabla me sale bien y tal. Pero al clicar en los botones, si clico en el primero, me pasa bien los datos y me hace lo q toca bien. En cambio si clico a cualquier otro botón me sale lo mismo que con el primero... Entonces supongo que solo se envían los datos "ocultos" la primera vez (de hecho he puesto chivatos y he comprobado que es eso lo que pasa), pero no se por qué.
No se si sera pq se llaman igual, si los tendre que nombrar de forma especial (en el input name del boton intente que fuera diferente el nombre por si se confundia, pero nada...).
Seguro que hay una forma muy facil de hacerlo...
PD: q bien me explico......... GRACIAS |
|
|
|

Lun Mar 20, 2006 12:16 pm
|
 |
slopal
Perlero Nuevo

|
Registrado: 23 Nov 2005
Mensajes: 78
|
|
|
|
|
por otra parte me han comentado que tendría que crear un form para cada "boton" con nombre diferente...
pero tampoco me funciona
| Código: |
print "<form name=\"form[b]$cont[/b]\" action=\"http://gralggen.lsi.upc.es/cgi-bin/freq/graphic.cgi\" target=\"_blank\" method=\"POST\" ENCTYPE=\"multipart/form-data\">";
# enviament paràmetres ocults per fer la imatge
...
print"<input type=\"hidden\" name=\"freq\" value=\"$f\">";
...
print"<input name=\"$tup_most\" value=\" X \" type=\"submit\">\n"; |
si miro el codigo fuente de la tabla cuando la muestra en html solo me sale el form0 (el primero...) :S |
|

Lun Mar 20, 2006 12:24 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
|
|
|
|
|
Cuando el usuario pulsa en un botón submit, el cliente web envía al servidor los valores de todos los campos que estén definidos dentro del <form> al que pertenece ese botón.
Si quieres enviar información distinta según el botón pulsado, tienes que: O crear nombres distintos para cada una de las opciones ocultas, O un formulario para cada botón submit.
En caso de elegir la segunda opción, creas un <form> por cada botón submit junto con las opciones ocultas.
Para distinguir qué botón ha sido pulsado puedes hacerlo:
1.- Dando a cada botón submit un nombre distinto (boton1, boton2, etc. etc.)
2.- Poner un campo oculto con el nombre o número de la opción a la que pertenece de las 4 que hay (<input type="hidden" name="opcion" value="1">...).
Luego, en el programa, primero miras qué botón ha sido pulsado y actuas en consecuencia.
P.D. No sé si me he explicado. |
|

Lun Mar 20, 2006 12:36 pm
|
 |
slopal
Perlero Nuevo

|
Registrado: 23 Nov 2005
Mensajes: 78
|
|
|
|
|
gracias explorer!
pero.... con la primera solucion que me habian dado ya iba... lo que me habia olvidado de cerrar el form dentro del bucle y claro......
AHHHH (que alegria-rabia que dan estos errores tontos) ya va  |
|

Jue Mar 23, 2006 4:06 am
|
 |
macgregor
Perlero Frecuente

|
Registrado: 09 Dic 2004
Mensajes: 117
Ubicación: españa
|
|
| El truco del almendruco XD |
|
|
Hola.
Lamento responder después de varios dias, pero tuve mucho trabajo y no me pude pasar por el foro
Teniendo en cuenta que ya te funciona es posible que no modifiques tu código con la idea que te voy a dar, pero teniendo en cuenta que se trata de un trabajo académico es posible que te lo plantees
De todas formas te explico otra opción para que la tengas en cuenta en futuras ocasiones, y otros usuarios tambien la puedan aplicar.
Otra forma de hacer lo que quieres, desde mi punto de vista más elegante y sencilla a la hora de programar y entender el código es haciendo un solo form y todos los botones que quieras.
No tienes necesidad de definir parámetros duplicados con nombres distintos para pasar la información a los diferentes forms.
El truco por llamarlo así consite en modificar el action del formulario al clicar en el boton, de esta manera es como si tuvieras tantos formularios distintos como botones y todos reciben el mismo número de parámetros con los mismos nombres
Mucho más sencillo a la hora de programar el o los cgi's que recibirán estos parametros, no te volverás loco con tanto nombre diferente
| Código: |
<button type="button" name="boton1" id="boton1" onclick = "document.formulario.action='http://gralggen.lsi.upc.es/cgi-bin/freq/boton1.cgi'; document.formulario.submit();">
<IMG title="Soy un fiber loc@" ALT="Como todos XD" src="../img/mi_imagen.gif" border="0"/>
</button> |
(en el código html se debe poner "formulario" al nombre del form )
Este código en javascript es independiente del navegador sigue el DOM del documento, por lo tanto funciona en todos. Afortunadamente
Espero que te sirva de ayuda.
Un saludo. |
|

Lun Abr 10, 2006 8:14 am
|
 |
slopal
Perlero Nuevo

|
Registrado: 23 Nov 2005
Mensajes: 78
|
|
|
|
|
gracias macgregor, como no estoy sobrada en tiempo... no lo probare , pero si en el futuro lo necesito me sera util
soy una fiber sin tiempo... como tod@s  |
|
Powered by phpBB © 2001, 2005 phpBB Group
|