Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Paso de datos de un cgi a otro (en este caso)

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Lun Mar 20, 2006 11:52 am
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Paso de datos de un cgi a otro (en este caso) Responder citando

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

Embarassed

PD: q bien me explico......... GRACIAS
Mensaje Lun Mar 20, 2006 12:16 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

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
Mensaje Lun Mar 20, 2006 12:24 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4130
Ubicación: Valladolid, España
Responder citando

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.
Mensaje Lun Mar 20, 2006 12:36 pm
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

gracias explorer!

pero.... Rolling Eyes con la primera solucion que me habian dado ya iba... lo que me habia olvidado de cerrar el form dentro del bucle y claro...... Razz

AHHHH (que alegria-rabia que dan estos errores tontos) ya va Smile
Mensaje Jue Mar 23, 2006 4:06 am
macgregor
Perlero Frecuente
Perlero Frecuente
Registrado: 09 Dic 2004
Mensajes: 117
Ubicación: españa
El truco del almendruco XD Responder citando

Hola.

Lamento responder después de varios dias, pero tuve mucho trabajo y no me pude pasar por el foro Sad

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 Smile

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 Smile

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 Very Happy

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 Wink

Espero que te sirva de ayuda.

Un saludo.
Mensaje Lun Abr 10, 2006 8:14 am
slopal
Perlero Nuevo
Perlero Nuevo
Registrado: 23 Nov 2005
Mensajes: 78
Responder citando

gracias macgregor, como no estoy sobrada en tiempo... no lo probare Embarassed, pero si en el futuro lo necesito me sera util

soy una fiber sin tiempo... como tod@s Wink
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group