Foros del Web » Programando para Internet » PHP »

Ayuda con Frames

Estas en el tema de Ayuda con Frames en el foro de PHP en Foros del Web. Hola a todos, la verdad es que tengo un lio en la cabeza, bueno os paso a explicar con un ejemplo, Tengo un fichero formularios.php: ...
  #1 (permalink)  
Antiguo 08/05/2003, 05:30
 
Fecha de Ingreso: noviembre-2002
Mensajes: 27
Antigüedad: 15 años, 1 mes
Puntos: 0
Ayuda con Frames

Hola a todos, la verdad es que tengo un lio en la cabeza, bueno os paso a explicar con un ejemplo, Tengo un fichero formularios.php:
<html><head></head><body>
<?php
echo "<form action=\"tramas.html\" method=\"post\" name=\"1\" target=\"_blank\" >\n";
echo "<input type=\"text\" name=\"menu\" >\n";
echo "<input type=\"hidden\" name=\"menu1\" value=\"hola\">\n";
echo "<input type=\"hidden\" name=\"menu2\" value=\"hola2\">\n";
echo "<input type=\"submit\" name=\"1\" value=\"Enviar\">\n";
echo "</div></form>\n";
?>
</body></html>

El cual llama a tramas.html, sera un fichero que contiene frames,como:
<html><head></head>
<frameset rows="40%,60%">
<frame src="prueba1.php" name="trama1" id="trama1" scrolling="Yes">
<frame src="prueba2.php" name="trama2" id="trama2" scrolling="Yes">
</frameset>
</html>

Codigo prueba1.php:
<html><head></head>
<body>
<?php
for($i=1;$i<=1000;$i++){
//Se procesa Informacion.
}
echo "I:$i";
?>
</body></html>

Codigo prueba2.php:
<html><head></head>
<body><img src="imagen.gif" border="1">
<?php
//Espero que termine el script prueba1 para "matar" el gif e informar de los Resultados
?>
</body></html>

Problemas:
1-Como paso el valor de los campos del form a prueba1.php para que los pueda procesar??
2-En la frame1 que ejecuta prueba1.php,eso creo, no me imprime el valor de $i, echo "I:$i"; ??, por lo que creo que no lo procesa, poe que??
3-Cuando termine el script prueba1.php como informo al script prueba2.php de que esta a terminado para
poder borrar el gif e informar, tendria que quedarse el script prueba2 en bucle esperando??

Bueno espero que me haya explicado correctamente,si me podeis explicar los pasos con ejemplos mejor.

Felicitar a los webmaster por este estupendo foro.

Saludos.
  #2 (permalink)  
Antiguo 08/05/2003, 06:02
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 15 años, 1 mes
Puntos: 11
1º El archivo tramas.html tendria que ser mas bien un tramas.php para poder hacer el paso de variables, pero bueno, la extension en realidad da igual, lo que tendrias que hacer es que si en formularios.php has declarado las variables de campo de formulario menu, menu1, menu2, colocar en tramas.html en la linea que abre prueba1.php esto:
Código PHP:
<frame src="prueba1.php<? echo "?menu1=$menu1&menu2=$menu2&menu3=$menu3"?>" name="trama1" id="trama1" scrolling="Yes">
2º Yo personalmente prefiero los while a los for, entonces sustituirias el for por esto:
Código PHP:
$i=1;
while(
$i<=1000) {
$i++;
// El resto de código a procesar

y claro... a continuacion poner el:echo "I: ".$i;


3º El tercer punto no lo entiendo muy bien, quieres cargar los dos archivos al mismo tiempo. Pero que el prueba2.php se quede con una imagen que ponga procesando o algo asi, y cuando termine prueba1.php de hacer el while, for, o lo que sea, prueba2.php, quite la imagen y ponga que el proceso a terminado? Si es eso, lo que podrias hacer es ke al final del profeso del while y antes de mostrar algo por pantalla, x ejemplo, justo despues del while y antes del echo, poner una cabecera ke redirigiera a prueba3.php header("location: prueba3.php"); , pero claro prueba3.php, tendria ke mostrar solo ke a terminado el proceso de prueba1.php y no la imagen, pero no creo ke valga la pena hacer esto, xk el servidor no muestra en el navegador el resultado de while en la página hasta que haya terminado, y calcular un rango de 1000 numeros puede que le cueste pocos segundos y la imagen puede que tarde bastante mas en cargar. Pero weno... tu mismo
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #3 (permalink)  
Antiguo 08/05/2003, 09:58
 
Fecha de Ingreso: noviembre-2002
Mensajes: 27
Antigüedad: 15 años, 1 mes
Puntos: 0
Gracias por contestar, yo te e puesto aqui un resumen de lo que quiero hacer:

2-echo "I: ".$i; No se visualiza la variable $i en la frame, por que??

3-En el punto tres lo que quiero hacer es lo siguiente, por la frame1 ejecuta el el prueba1.php el cual recibe datos de un socket y los va presentando en pantalla,con flush(), esto lo e representado con bucle. En la frame2 Muestro un Gif olo que sea diciendo que estoy recibiendo datos.

Termino de recibir datos en prueba1.php(termina el script) e informo ala frame(prueba2.php) de que se a terminado, como lo puedo hacer???

Espero que ahora quede un poquito mas claro.

Saludos.
  #4 (permalink)  
Antiguo 08/05/2003, 15:37
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

2.- mdk, en este caso creo que es mas mejor usar for(). Para casos asi lo crearon.

javichuTX, ¿muestra l:? ¿o tampoco lo muestra? ¿has mirado en el HTML generado a ver si es que si lo muestra pero por culpa del HTML no se ve en el navegador.

3.- PHP se ejecuta en el servidor. A PHP lo invoca Apache. A Apache lo llama el navegador. Por desgracia, HTTP no mantiene el estado. Es mas, creo que tampoco esta asegurado que se carge antes un frame que el otro. Con esto te quiero decir que es imposible que PHP se comunique directamente con la pagina que esta en el otro frame. Como mucho, lo que puedes hacer es generar un javascript que carge otra pagina (o imagen, creo que se puede) en el otro frame. Este javascript lo pondrias detras del proceso de datos, para que se ejecute cuando acabe de procesarlos. Pero es javascript lo que debes usar.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 23:56.