Foros del Web » Programando para Internet » PHP »

discriminar carga de contenido en frames

Estas en el tema de discriminar carga de contenido en frames en el foro de PHP en Foros del Web. Buenas, tengo una pagina con frames (todo html y algun javascript). de manera sencilla digamos que los botones estan en el frame 1 y los ...
  #1 (permalink)  
Antiguo 14/03/2005, 15:17
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
discriminar carga de contenido en frames

Buenas, tengo una pagina con frames (todo html y algun javascript). de manera sencilla digamos que los botones estan en el frame 1 y los documentos htm se cargan en el frame 2. Bien, la pagina se inicia con a.htm en el frame 2, y tengo botones que abren b.htm, c.htm, ect.

Me gustaria poder enlazar a mi pagina desde otras paginas pero en vez de mostrando el index.htm con a.htm en frame 2, que cargue por ejemplo, c.htm en el frame 2.

Me podeis decir el codigo a implementar y en que archivos? (si es javascript o php mejor, pues donde estoy empezando a defenderme...)

Mil gracias
rakeljuice
  #2 (permalink)  
Antiguo 15/03/2005, 09:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
hola, hay alguien ahí...?
  #3 (permalink)  
Antiguo 15/03/2005, 12:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

La solucion PHP seria que el fichero que contiene el frameset aceptase por URL un parametro indicandole que pagina cargar en el frame 2. Por ejemplo:

index.php?p=b

y en index.php
Código PHP:
<frameset ....>
<frame name="2" src="<?php
$paginas
=array('a'=>'a.htm','b'=>'b.htm'); // array asociativo con todas las posibles paginas
$pagina='a.htm'//inicializamos con la pagina por defecto
if (isset($_GET['p'])) {
// miramos que el parametro exista como indice en el array de paginas
  
if (in_array($_GET['p'],$paginas)) {
    
$pagina=$paginas[$_GET['p']];
  }
}

echo 
$pagina;
?>">
</frameset>
Saludos

PD: En el foro de javascript te podran explicar como puedes hacer que enlazando a b.htm te carge el index.htm con un parametro para que carge b.htm en el frame.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 15/03/2005, 12:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
1000 gracias, voy corriendo a implementarlo
rakeljuice
  #5 (permalink)  
Antiguo 08/04/2005, 07:57
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
Buenas, hay algo que no me queda muy claro...: dices que
<<La solucion PHP seria que el fichero que contiene el frameset aceptase por URL un parametro indicandole que pagina cargar en el frame 2. Por ejemplo:

index.php?p=b

y en index.php [...]
>>

Bien, pero es que el archivo que contine el frameset es el index, por lo que ¿va todo el codigo en el index?.

No lo entendi muy bien...
  #6 (permalink)  
Antiguo 08/04/2005, 09:09
 
Fecha de Ingreso: febrero-2004
Ubicación: Bogotá, Colombia
Mensajes: 191
Antigüedad: 13 años, 10 meses
Puntos: 1
Por eso te estan diciendo q debes poner el codigo donde esta el frameset. Si es el index el q tiene el frameset entonces debes poner el codigo en el index.
  #7 (permalink)  
Antiguo 08/04/2005, 12:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
Ah, vale, todo el codigo va en el index, que es el que tiene el frameset. Y en las paginas que se cargan en él no pongo nada...
Bien, muchas gracias.
  #8 (permalink)  
Antiguo 26/04/2005, 07:25
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
no me sale

Buenas, no se si soy muy torpe o que, pero no me sale.

He subido los archivos a http://www.itekmadrid.com/prueba para probar desde servidor.

Bien, la url funciona, y los vinculos entre los marcos tambien, claro que esto no lleva php.

Pero si en el navegador escribo (que seria como vincular con boton desde otro lugar, no?)
http://www.itekmadrid.com/prueba/index.php?p=a
se sigue abriendo la pagina por defecto (main) no me abre la a.htm, que es de lo que se trata.

Me puede alguien echar un cable, por favor?

Gracias, muchas gracias

Rakeljuice
  #9 (permalink)  
Antiguo 26/04/2005, 07:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Lo que necesitas hacer para mostrar otro contenido es indicar esa página directamente en el frameset.. como lo indicó josemine... en otras palabras, cambia esto <frame name="main" src="main.htm"> por esto
Código PHP:
<frame name="main" src="<?php
$paginas
=array('a'=>'a.htm','b'=>'b.htm'); // array asociativo con todas las posibles paginas
$pagina='main.htm'//inicializamos con la pagina por defecto
if (isset($_GET['p'])) {
// miramos que el parametro exista como indice en el array de paginas
  
if (in_array($_GET['p'],$paginas)) {
    
$pagina=$paginas[$_GET['p']];
  }
}

echo 
$pagina;
?>">
... que es exactamente lo que dijo josemine... nada más que tu link deberá RECARGAR toda la página... no dirigirse hacia el marco... creo lo haces con target="_parent" ó target="_top"... no sé!!!!

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 26/04/2005, 14:15
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
tengo esto en el index, que creo que es lo que me habeis dicho:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset rows="80,*" cols="*" frameborder="NO" border="0" framespacing="0">

<frame src="top.htm" name="top" scrolling="NO" noresize id="top" >
<frameset cols="80,*" frameborder="NO" border="0" framespacing="0">
<frame src="left.htm" name="left" scrolling="NO" noresize id="left">
<frame name="main" src="<?php
$paginas=array('a'=>'a.htm','b'=>'b.htm'); // array asociativo con todas las posibles paginas
$pagina='main.htm'; //inicializamos con la pagina por defecto
if (isset($_GET['p'])) {
// miramos que el parametro exista como indice en el array de paginas
if (in_array($_GET['p'],$paginas)) {
$pagina=$paginas[$_GET['p']];
}
}

echo $pagina;
?>">
</frameset>
</frameset>
<noframes>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
</body></noframes>
</html>


y en la pagina que carga en marco left, tengo esto (para que funcione desde dentro tambien...):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>left.htm </p>
<p>&nbsp;</p>
<p><a href="a.htm" target="main">a.htm</a></p>
<p><a href="b.htm" target="main">b.htm</a></p>
<p>&nbsp;</p>
</body>
</html>

Creo que no está mal. Pero no funciona. Yo escribo en el navegador: http://www.itekmadrid.com/prueba/index.php?p=a o http://www.itekmadrid.com/prueba/index.php?p=b y lo que se abre en main es main.htm, la pagina por defecto, no se abre ni a.htm ni b.htm

Creedme si os digo que me siento lo mas tonto del mundo....

Gracias de nuevo
Rakel

Última edición por rakeljuice; 26/04/2005 a las 14:29
  #11 (permalink)  
Antiguo 27/04/2005, 05:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 370
Antigüedad: 12 años, 9 meses
Puntos: 1
Algún cablecillo??

Perdón por ser tan plasta....
  #12 (permalink)  
Antiguo 27/04/2005, 06:29
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
rakeljuice, pedirte que cuando pongas código lo ilumines para que se lea mejor... útiliza el respectivo botón del editor ó coloca directamente las etiquetas; [ PHP]--código -- [ /PHP] (sin espacios).

Ahora bien... no ví error en tu código y tube que probarlo para sacarme de dudas... en efecto, no funciona... no devuelve "true" la función in_array()... habrá qué ver por qué... pero solo sustituyela por array_key_exists() y solucionado... velo aquí: http://jam1138.webcindario.com/pruebas/principal.php

- Sobre array_key_exists(): www.php.net/array_key_exists

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 16:58.