Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO boton que activa iframe y pasa variables php vacías

Estas en el tema de boton que activa iframe y pasa variables php vacías en el foro de PHP en Foros del Web. Hola a todos y todas, Os explico lo que me pasa, porque creo ver el fallo pero no la manera de solucionarlo: Tengo dos selects, ...
  #1 (permalink)  
Antiguo 10/04/2013, 05:21
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Pregunta boton que activa iframe y pasa variables php vacías

Hola a todos y todas,

Os explico lo que me pasa, porque creo ver el fallo pero no la manera de solucionarlo:
Tengo dos selects, que relleno a través de consulta a BD. Uno influye en las opciones que muestra el otro (los dos están dentro de un form).

Una vez el usuario ha elegido una opción en los dos, mando la opción elegida a una variable php por el método $_POST y lo guardo en una nueva variable para poderlo usar. Hasta aquí todo perfecto.

El iframe lo tengo invisible, y cuando apreto un botón, hago que aparezca y en el src que lo dirige mando las variables php de antes. Diría que la forma es correcta:

<iframe src="intro_beach.php?nm=<?echo$nm;?>&id=<?echo$id; ?>" id="intro_beach" frameborder="0" class="iframe" scrolling="no";></iframe>

pero no me pasa los datos... hago un $_REQUEST en el fichero del iframe y me devuelve lo siguiente:

Array ( [nm] => [id] => )

A mi forma de ver es cómo que con el botón sólo hago visible el iframe, pero ya "estaba creado" y el valor de las variables php no existía.

He probado a refrescarlo desde función javascript o incluso crearlo des de la misma función pero no he logrado nada en condiciones, y seguía sin pasar el valor de las variables.

Alguien me puede explicar un poquito por dónde tirar? No soy experta y voy acabando ideas

Muchísimas grácias!
  #2 (permalink)  
Antiguo 10/04/2013, 05:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: boton que activa iframe y pasa variables php vacías

El problema es que php corre del lado servidor y el html y javascript del lado cliente.

Si miras el codigo con fire bug veras en el iframe

<iframe src="intro_beach.php?nm=&id="....

Cuando mandas el formulario lo mandas al servidor para usar esos datos debes pedir al servidor que los retorne...

Tienes dos formas de hacerlo... que el formulario en el action se recargue a si mismo en ese momento las variables tendran valor y el iframe contenido.

O usar javascript para leer los datos del formulario... y pasarlos a la url del iframe....

Código Javascript:
Ver original
  1. vsrc="intro_beach.php?nm="
  2.         +document.getElementById("nm").value
  3.         +"&id="+document.getElementById("id").value;
  4.  
  5. ///Y refrescar el iframe con esos datos
  6. document.getElementById("intro_beach").scr=vsrc;
  7. //no estoy seguro de esta linea
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 11/04/2013, 05:13
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: boton que activa iframe y pasa variables php vacías

Gracias quimfv por responder.

Lo que me comentas primero del action del form, ahí tengo puesto que recargue la página, debo poner que recargue el mismo form?

He puesto el código que me has adjuntado en una función y es correcta, pero puedo llamarla des del src del iframe?

Me dice que no está definida.
lo he hecho así porque entiendo que el resultado de la función es lo que debe ir en el src.
<iframe src="javascript:iframes();" id="intro_beach" frameborder="0" class="iframe" scrolling="no";></iframe>

Gracias mil por tu tiempo!
  #4 (permalink)  
Antiguo 11/04/2013, 07:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: boton que activa iframe y pasa variables php vacías

Necesitaria ver exactamente lo que estas haciendo.

Si el formulario en el action tiene el mismo fichero donde hay el propio formulario y el iframe digamos formulario.php al recargarse debería funcionarte la primera opcion la de crear las variable y ponerlas en el src del iframe.

Es decir

formulario.php

Código PHP:
Ver original
  1. <?php
  2. if (isset($_REQUEST['nm']) && isset($_REQUEST['id'])){
  3. $nm=$_REQUEST['nm'];
  4. $id=$_REQUEST['id'];
  5. }
  6. ///mas codigo php
  7. ?>
  8. <!-- El formulario // -->
  9. <form acation="formulario.php">
  10. ...
  11. </form>
  12. <br />
  13. <!-- El iframe // -->
  14. <?php if (isset($_REQUEST['nm']) && isset($_REQUEST['id'])){ ?>
  15. <iframe src="intro_beach.php?nm=<?php echo $nm;?>&id=<?php echo $id; ?>" id="intro_beach" frameborder="0" class="iframe" scrolling="no";></iframe>
  16. <?php } ?>

De esta fortma la primera vez que se cargue formulario.php no crearà el iframe puesto que los parámetros no estaran "set", cuando mandes el formulario se recargará pero esta vez si estaran "set" con lo que se creara el iframe con una url correcta.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 12/04/2013, 01:15
 
Fecha de Ingreso: octubre-2010
Ubicación: Costa Brava
Mensajes: 58
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: boton que activa iframe y pasa variables php vacías

Muchísimas gracias!

Al final lo logré, iuju!

Para quien le pueda interesar pongo aquí el código en resumido:

En la página dónde está el form:
Cita:
<?php <!--esto recoge los datos de los selects-->
if (!empty($_POST))
{
$nm = $_POST['nm']; //selecció del municipi per a la cerca
$id = $_POST['id'];
}
?>
<!--selects encadenados, dentro del form. Hice exactamente lo mismo para el otro select "id"-->
<select id="nm" name="nm" size="1" class="forms" onchange="this.form.submit();" value="" >
//lo que manda el dato a php
<script type="text/javascript">document.forms.frmsel.nm.value='<?php echo (isset($_POST ['nm']))?$_POST ['nm']:'';?>';</script>

//fuera del form declaro el iframe
<iframe src="intro_beach.php?nm=<?php echo $nm;?>&id=<?php echo $id; ?>" id="intro_beach" frameborder="0" class="iframe" scrolling="no";></iframe>

//después del iframe declaro el botón que lo hace visible
<input type="button" name="new" value="Intro" style="cursor:pointer" class="forms" onclick="document.getElementById('intro_beach').st yle.display='block';">

Etiquetas: iframe, urlrequest
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 01:48.