Foros del Web » Programando para Internet » PHP »

Más que liado con envío de variables a un form en que uso php

Estas en el tema de Más que liado con envío de variables a un form en que uso php en el foro de PHP en Foros del Web. Hola a todos, Llevo tres días buscando, leyendo y probando alternativas, pero no consigo salir de esto (advierto que soy un aprendiz) y llegó el ...
  #1 (permalink)  
Antiguo 09/01/2014, 12:25
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 3 meses
Puntos: 1
Más que liado con envío de variables a un form en que uso php

Hola a todos,

Llevo tres días buscando, leyendo y probando alternativas, pero no consigo salir de esto (advierto que soy un aprendiz) y llegó el momento de pedir ayuda.

En mi "pagina01.html" tengo: (extracto)

Código HTML:
Ver original
  1. <div id="TextTitleInside">
  2.  
  3.                   Título de un documento
  4.  
  5. </div>

A continuación del div y en la misma página capturo su contenido en una variable (Esto lo hago porque más adelante, cuando resuleva el lío en que estoy ahora, intentaré que esto funcione de manera dinámica) de la siguiente forma:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2.   Dcto=document.getElementById('TextTitleInside').innerHTML;
  3.   alert(Dcto);

En el siguiente div envío variables por url a un archivo de formulario que tengo en php

Código HTML:
Ver original
  1. <div id="Imagen_Email"><a href="EnviaEnlaceNoticias.php?id_producto=Estoy probando &amp;titulo=Dcto"></a></div>

En "EnviaEnlaceNoticias.php" tengo... (entre otras cosas)

Código PHP:
Ver original
  1. <html>
  2. <head>
  3. <title>Enviar un enlace por e-mail</title>
  4.  
  5.  
  6. </head>
  7. <body bgcolor="6699CC" onload="window.focus();javascript:Recaptcha.reload();">
  8.  
  9. <FORM method="post" action="/piaalc/WebIndig_ESP/noticias/MainPages/EnviaEnlaceNoticias.php" name="form_enviar">
  10. <input type="hidden" name="id_producto" value="<?php echo $id_producto;?>" >
  11. <input type="hidden" name="titulo" value="<?php $Dcto;?>">
  12.  
  13. ... más código
  14.  
  15. </form>
  16.  
  17.  
  18. </body>
  19.  
  20. </html>


Cuando hago click en la "Imagen_Email" se abre la ventana del formulario, pero al revisar los valores que se han recibido en "EnviaEnlaceNoticias.php", encuentro (entre otras cosas que si están bien):


Código HTML:
Ver original
  1. <FORM method="post" action="/piaalc/WebIndig_ESP/noticias/MainPages/EnviaEnlaceNoticias.php" name="form_enviar">
  2. <input type="hidden" name="id_producto" value="Estoy probando " >
  3. <input type="hidden" name="titulo" [COLOR="Red"]value=""[/COLOR]>

Es claro que no se cómo hacer para que el contenido de la variable "Dcto" me aparezca en el form... (value para name="titulo" aparece vacío) he buscado he intentado muchas alternativas, pero todas me han fallado.

Agradeceré a quien me pueda dar una mano, Gracias.
  #2 (permalink)  
Antiguo 09/01/2014, 12:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Más que liado con envío de variables a un form en que uso php

Porque no estás imprimiendo el valor de la variable:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?php $Dcto;?>">

Debe ser así:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?php echo $Dcto;?>">

O así:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?=$Dcto?>">

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 09/01/2014, 13:15
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Más que liado con envío de variables a un form en que uso php

Muchisimas gracias Alexis,

Te cuento que al utilizar tu primera propuesta

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?php echo $Dcto;?>">

me encuentro con esto:
Código HTML:
Ver original
  1. Notice: Undefined variable: Dcto in C:\servers\piaalc\WebIndig_ESP\noticias\MainPages\EnviaEnlaceNoticias.php on line 10 Call Stack #TimeMemoryFunctionLocation 10.0008372256{main}( )..\EnviaEnlaceNoticias.php:0 ">

y si utilizo la segunda:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?=$Dcto?>">

Me devuelve esto:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?=$Dcto;?>">
  #4 (permalink)  
Antiguo 09/01/2014, 13:43
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Más que liado con envío de variables a un form en que uso php

Imprime el valor de la variable $Dcto para saber qué contiene, pues, en el bloque de código que muestras, no se ve en dónde le asignas un valor.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 09/01/2014, 15:21
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Más que liado con envío de variables a un form en que uso php

Gracias por tu atención, trataré de seguirte...

Esto es lo que tengo en el php:

Código HTML:
Ver original
  1. <input type="hidden" name="titulo" value="<?=$Dcto;?>">

para "Imprime el valor de la variable $Dcto para saber qué contiene" hago lo siguiente: (agregué las líneas en el archivo "EnviaEnlaceNoticias.php "

Código PHP:
Ver original
  1. <?php
  2.     print "<pre>";
  3.     // imprimo lo que se recibe en el php
  4.     print_r($_REQUEST);
  5.     print "</pre>\n";
  6.  
  7.     print "<p>El contenido de mi variable DCTO es:$_REQUEST[titulo]</p>\n";
  8.     echo $id_producto;
  9.     echo $Dcto;
  10. ?>

Esto me entrega para "print_r($_REQUEST);"

Código HTML:
Ver original
  1. Array
  2. (
  3.     [id_producto] => Estoy probando
  4.     [titulo] => Dcto
  5. )

Para
Código HTML:
Ver original
  1. print "<p>El contenido de mi variable DCTO es:$_REQUEST[titulo]</p>\n";
me entrega:

Código HTML:
Ver original
  1. El contenido de mi variable DCTO es:Dcto

Para
Código HTML:
Ver original
  1. echo $id_producto;
  2.     echo $Dcto;
me entrega:

Código HTML:
Ver original
  1. El contenido de mi variable DCTO es:Dcto
  2.  
  3.          y
  4.  
  5. Estoy probando
respectivamente.

Para: "pues, en el bloque de código que muestras, no se ve en dónde le asignas un valor."

Tengo:

1.- La variable "Dcto" se origina en el archivo html y le asigno valor con el contenido que rescato de un div:

Puedes ver el código inicial en mi primer mensaje de ayuda (primer código)

2.- Defino y asigno contenido/valor a la variable "Dcto" en el Segundo código de mi primer mensaje... además la chequeo con el mensaje de alerta que incluyo ahí para ver que efectivamente toma el valor que le paso.

3.- Como la variable "Dcto" es global, puedo tomar su valor fuera del script en que la definí e intento usarla (esa es mi apuesta) pasando su valor -no la variable "Dcto"- por URL al archivo php... y aquí creo que está el problema, porque lo que pasa en el parámetro "titulo = Dcto" es precisamente "Dcto" y no su valor... "$Dcto" sería, según mi apuesta la forma en que esta variable es recibida en php... pero resulta claro que no es así.

Disculpa lo largo del mensaje, pero trato de ser lo más claro possible. Gracias de Nuevo por tu tiempo y atención.
  #6 (permalink)  
Antiguo 09/01/2014, 19:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Más que liado con envío de variables a un form en que uso php

Viendo el código inicial, creo que te equivocas al intentar mandar el valor de titulo en el enlace. El valor de Dcto está en el código JavaScript, pero intentas asignarlo en el enlace que es un elemento HTML, por lo tanto, lo que envías es "Dcto" como tal, es decir, la palabra "Dcto", no el valor de la variable Dcto.

Lo que puedes hacer es lo siguiente:

Código HTML:
Ver original
  1. <a href = "EnviaEnlaceNoticias.php" id = "enlace">ENLACE</a>

Código Javascript:
Ver original
  1. var enlace = document.getElementById("enlace"),
  2.     destino = enlace.getAttribute("href"),
  3.     id_producto = "Estoy probando",
  4.     titulo = document.getElementById("TextTitleInside").innerHTML;
  5.  
  6. enlace.addEventListener("click", function(e){
  7.     e.preventDefault();
  8.     window.location = destino + "?id_producto=" + id_producto + "&titulo=" + titulo;
  9. }, false);

De este modo, capturas correctamente el valor que deseas enviar en la variable titulo y en EnviaEnlaceNoticias.php, lo recibes como $_GET["titulo"].

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 09/01/2014 a las 19:06
  #7 (permalink)  
Antiguo 10/01/2014, 17:00
 
Fecha de Ingreso: enero-2009
Mensajes: 173
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Más que liado con envío de variables a un form en que uso php

Muchas gracias Alexis,

Con tu ayuda pude resolver este tema al fin. Me demoré en responderte porque antes me puse a buscar información para saber que hacía el código que me enviaste.


Hasta la próxima...
  #8 (permalink)  
Antiguo 10/01/2014, 19:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Más que liado con envío de variables a un form en que uso php

Disculpa por no haberte puesto la explicación respectiva, suelo hacerlo, pero cuando te contesté, estaba algo ocupado, de hecho estos días estoy ocupado con un par de sistemas de unos clientes.

Aquí va la explicación:

1. Tomo el elemento de id "enlace" y lo asigno a la variable enlace. Dicho elemento, es el enlace que está en el documento.
Código Javascript:
Ver original
  1. enlace = document.getElementById("enlace")

2. Tomo el valor del atributo "href" del enlace y lo asigno a la variable destino. Dicho valor (en el ejemplo), es EnviaEnlaceNoticias.php.
Código Javascript:
Ver original
  1. destino = enlace.getAttribute("href")

3. Asigno el texto "Estoy probando" (que es el que pusiste) a la variable id_producto.
Código Javascript:
Ver original
  1. id_producto = "Estoy probando"

4. Tomo el contenido del elemento de id "TextTitleInside" y lo asigno a la variable titulo.
Código Javascript:
Ver original
  1. titulo = document.getElementById("TextTitleInside").innerHTML;

5. Al enlace, le asigno el evento click con ayuda del método addEventListener, con lo cual, cuando demos un clic al enlace, se ejecutará la función que está como segundo parámetro del método. En dicha función, capturamos el evento (click) mediante la variable e.

Ya estando en la función, evito el comportamiento natural del evento, que es el de redireccionar hacia la página indicada en el atributo href del enlace, para lo cual utilizo el método preventDefault. Finalmente, hago la redirección (con window.location), para lo cual, indico que la redirección será hacia la indicada en la variable destino, pero además, le añado una query string, en la cual, le asigno a las variables id_producto y titulo (de la query string), los valores de las variables id_producto y titulo que detallé al inicio.
Código Javascript:
Ver original
  1. enlace.addEventListener("click", function(e){
  2.     e.preventDefault();
  3.     window.location = destino + "?id_producto=" + id_producto + "&titulo=" + titulo;
  4. }, false);

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: form, formulario, html, variable, variables
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 11:41.