Foros del Web » Programando para Internet » PHP »

PHP Include dinámico?¿ (Algo similar a un iframe)

Estas en el tema de PHP Include dinámico?¿ (Algo similar a un iframe) en el foro de PHP en Foros del Web. Vereis, estoy construyendo una web que contendra muchos archivos y estará muy estructurada en carpetas y subcarpetas. Para montar las paginas dispongo de 3 archivos: ...
  #1 (permalink)  
Antiguo 26/01/2010, 09:20
 
Fecha de Ingreso: noviembre-2009
Mensajes: 21
Antigüedad: 15 años
Puntos: 1
PHP Include dinámico?¿ (Algo similar a un iframe)

Vereis, estoy construyendo una web que contendra muchos archivos y estará muy estructurada en carpetas y subcarpetas. Para montar las paginas dispongo de 3 archivos:

-Header (Lleva la cabecera, el head, el menu de navegacion...)
- Contenido (Es una pagina en la que incrusto el head y el footer mediante un include y entre ellos va el contenido en un div)
- Footer (Cierra la página </body>, </html>. Y lleva el copyright)

Imagen de la estructura basica:

http://img138.imageshack.us/img138/7931/sinttulorm.png

Mi problema es sencillo:

Al incrustar el header en las páginas de subdirectorios no funcionan las rutas relativas al header, por lo que debo usar rutas absolutas todo el tiempo para las iamgenes y enlaces del menu. Esto me ralentiza la página ademas de que debe cargarse cada vez que se cambia de seccion, por lo que hasta la posicion de la navegacion del menu vuelve a su posicion default...

Mi pregunta:

Que codigo, lenguaje o script podria usar para que al pulsar en un enlace del menú no me cargue una dirección de un archivo .php que contenga el include del header y el footer, sino que incruste esa página en el header. Explicacion:

1º- Pulso en Noticias, y el enalce me llevaria por ejemplo a:
http://miweb.com/modulos/noticias.php

2º- En ese archivo noticias.php tengo lo siguiente:
Código:
<?php include ('../header.php'); ?>
<div class="contenido">ESTO ES UNA NOTICIA!</div>
<?php include ('../footer.php'); ?>
Vale pues en vez de eso quiero que pase esto:

Código:
<CABECERA />
<MENU>
<script que cambia la url de include a /noticias/noticias.php>Noticias</script>
<script que cambia la url de include a /foro>Foro</script>
<script que cambia la url de include a /musica> Musica</script>
</MENU>
<?PHP include ($valor que me de el script de Noticias); ?>
<FOOTER />
Estoy pensando en mediante javascript darle un valor a una variable segun el enlace que pulses, ese valor debes ser al url del archivo que deseo incrustar. Pero para que funcionara el codigo php deberia estar ejecutandose continuamente y por mis conocimientos juraria que solo se interpreta una vez. Por lo cual aunque javascipt cambie la url del include, este no cambiara al menos que se recargue la pagina.... Sugerencias?! T_T

Muchisimas gracias por tomarte el tiempo de leer este post, y muchas más si respondes aunque sea para decirme mis errores. Gracias.
  #2 (permalink)  
Antiguo 26/01/2010, 09:29
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 14
Respuesta: PHP Include dinámico?¿ (Algo similar a un iframe)

Lo que tú quieres son parámetros en las URL. Por ejemplo, lo más básico para lo que tú pides sería poner esta URL: http://www.tusitio.com/index.php?seccion=noticias

Esa URL significa que te va a llevar al index.php de tu sitio y que hay un parámetro "seccion" con el valor "noticias". Te recomiendo que te leas la documentación sobre las variables externas. Para este caso necesitas la parte de GET, pero tal vez te convenga echarle un vistazo a todo.
  #3 (permalink)  
Antiguo 26/01/2010, 10:24
 
Fecha de Ingreso: noviembre-2009
Mensajes: 21
Antigüedad: 15 años
Puntos: 1
Respuesta: PHP Include dinámico?¿ (Algo similar a un iframe)

Muchas gracias RYO. Ahora puedo incrustar las pagians .php que quiera enlazando asi:

http://misitio.com/index.php?pag=noticias/noticias.php

o

http://misitio.com/index.php?pag=foro

En el include pongo:

Código:
<?php include ($_GET["pag"]); ?>
Y todo funciona perfectamente, a excepcion de una cosa. El include funciona cuando clickeo un enlace ya que es cuando se le da un valor a "pag". Pero la primera vez que se carga la pagina, como "pag" no tiene ningun valor no meustra ningun contenido por defecto y en su lugar muestra un error. Podria asignar algun valor por defecto a pag?¿ Seria algo asi?:

Código:
<?php $pag="index.php" ?>
Si consiguieras resolverme esa ultima duda tendria todo listo y podria continuar trabajando ^^ Gracias.
  #4 (permalink)  
Antiguo 26/01/2010, 11:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 21
Antigüedad: 15 años
Puntos: 1
Respuesta: PHP Include dinámico?¿ (Algo similar a un iframe)

Sorry el doble post, pero ya he solucionado todas mis dudas!! Me puse a leer por vuestro wikiy voila! Respuesta al canto:

http://www.forosdelweb.com/wiki/PHP:Web_modulares:%C2%BFC%C3%B3mo_hago_esas_p%C3%A 1ginas_web_que_las_secciones_que_incluyen_son_del_ tipo_index.php%3Fid%3D2

Muchas gracias xP!!!
  #5 (permalink)  
Antiguo 26/01/2010, 12:24
Avatar de Ryo
Ryo
 
Fecha de Ingreso: marzo-2008
Ubicación: Bilbao
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 14
Respuesta: PHP Include dinámico?¿ (Algo similar a un iframe)

¡Me alegro! De todas formas, no te recomendaría usarlo así, porque la seguridad de tu página web dejaría mucho que desear... Cualquiera podría poner en la dirección cualquier cosa, incluso cosas que podrían hacer daño a tu web.

Te recomiendo más bien que proceses las variables externas. Luego ya puedes usar un código como este:
Código PHP:
switch ( $_GET['seccion'] ) {
case 
"noticias":
$pag "noticias/noticias.php";
break;
case 
"foro":
$pag "foro":
break;
default:
$pag "index.php";

Así será bastante más seguro ;)

Etiquetas: iframe, include, similar
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 15:12.