PHP: incluye una página dentro de otra

Una de las ventajas al trabajar con archivos .php es la posibilidad de poder insertar una página dentro de otra, me explico:

Hay un menú que va a salir, el mismo, en todas las páginas que comprenden una web. Pues en lugar de copiar y pegar ese menú en todas las páginas (o crearlo desde cero en todas), lo guardamos en una página (da igual la extensión) y llamamos a ese archivo desde todas las páginas en las que queremos que se muestre. De esta forma, con una sola modificación actualizaremos el menú de todas las páginas.

Para hacer esto tenemos dos funciones en php: include () y require().

La forma de trabajar con ellas es la siguiente, la página principal (la que contenga las demás) debe tener extensión .php y el contenido a añadir debe incluirse con los siguientes código:

<?
include 'menu.html';
require ('menu.html');
?>

Aunque pensándolo bien está mal dicho «incluir una página dentro de otra» ya que lo incluimos no es una página en sí, sino una porción de ella, un trozo de código (sin cabeceras ni cuerpo del documento). Algo cómo por ejemplo, esto:

<ul>
<li>Enlace</li>
<li>Enlace</li>
</ul>

La diferencia entre estas dos funciones es que con include cuando ocurra un error en el archivo a procesar el recorrido seguirá haciendose independientemente de ese error, useasé lanzará ese error pero seguirá mostrando el contenido que siga encontrando en la página principal. Por el contrario, require, al encontrar un error detendrá toda la lectura de la página. Yo suelo usar include, aunque aconsejo usar require cuando la página a añadir sea indispensable para el buen funcionamiento / visionado de la principal.

También podéis usar require_once () e include_once (), que incluyen una página pero solamente una vez, así si no te has dado cuenta y la habías incluido ya antes, no te lo duplicará.

Esto es una de las cosas que primero se aprenden en php (por lo menos en mi caso) pero siempre viene bien recordarlas ya que nos darán mucho juego :)

  • 24 abril 2009
  • php
  • , ,

17 comments on “PHP: incluye una página dentro de otra”

  1. Esto fue lo que me hizo dar el paso a php. Recuerdo cuando alguna de mis primeras webs hechas 100% en HTML alcanzaba un número interesante de páginas y modificarlas 1 por 1 era una pesadilla.
    Al principio, la solución fue insertar frames, pero era una auténtica guarrada.

  2. ¿?Como se puede hacer esto, pero sin que recargue la pagina entera, es decir, que al hacer clic en un vinculo solo recargue la parte del contenido de la pagina, como se hacia con iframes, pero sin recargar la pagina externa que tiene el menu, logo, etc..

    1. Hola Mauricio!!

      Para eso lo mejor es Ajax, la teoría es crear una función a la que le mandemos una url (el contenido a mostrar) y un nombre (id del div en el que se mostrará), la puedes añadir a un enlace y se realizará la preparga sin recargar la página.
      Con lo que te he comentado supongo que podrás encontrar algo por internet, si no lo consigues avisame y me tomo un poco más de tiempo en explicarte mejor :)

      Un saludo!!

  3. muchas gracias, creo que encontre lo que me dijiste, si queres te paso la pagina de donde.. luego lo leo mas detenidamente, pero casi seguro ya entendi. Saludos!

  4. Hola! me interesó mucho esto último que están comentando, de utilizar funciones para no recargar toda la página. Recién me estoy iniciando en php y es super útil el tema de los includes, si puedieran darme una pauta de cómo buscar para aplicar los enlaces en funciones como mencionan se los agradecería.
    Desde ya saludos a todos y gracias.
    Excelente el blog, siempre encuentro cosas útiles.

  5. Hola Nelly Natalí, yo tengo una super duda, veo que tu blog esta muy interesante y que te tomas el tiempo de responder a tus fans ajajajajaja =), mi duda es la siguiente.

    este es mi código:

    <!—->

    pero el problema es que yo tengo un formulario dentro de una carpeta que se llama formValueONLINE y el archivo principal es index.php y tengo mi index.php de la página la pagina principal pero obvio fuera de la carpeta (formValueONLINE) como puedo poner el index.php de la carpeta formValueONLINE dentro de la hoja en la que se debe mostrar el formulario, de hecho esa hoja esta dentro de una carpeta que se llama (page) y la hoja se llama valuacionOnline. Espero me de a entender y si me das la solución te amare toda mi vida =) sera tu fan numero uno Nelly Natalí, gracias y saludos!!!

  6. hola a todos soy nueva en sto estoy haciendo una pagina de ragistrar usuarios con php pero primero relaizo el login de ahi quiero q cargue una nueva pagina con otros contenidos imagenes y textos alguien me puede colaborar

  7. Hola, Muy interesante y gracias por la informacion. Aun no me queda claro como lograr hacer que funcione mi caso. lo explico acontinuacion.
    En encabezado cargue una barra de busqueda para buscar una palabra en una base de datos y el resultado me lo muestre en un div del lado izquierdo.
    Despues que tengo el listado de resultados del lado derecho al dar un click en cualquiera del listado que aparezca el detalle de lo seleccionado en el div del lado derecho. Todo lo referente a conectividad y consulta en la base de datos me funciona. lo que no funciona es que al mandar la variable por formulario o url forzosamente me cambia a una pagina nueva y omite que quiero que aparezca en el div. no logro que solo lo muestre en el div deseado.

Responder a jonathan Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *