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 :)
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.
además de verdad! que rabia me daba a mi tener q modificar lo mismo en todas las páginas.
Ahora no hay una web que haga que no incluya estas funcioncitas..^^
ua preguntita ya que veo que le das al tema… y un include que incluya un fragmento con otro include es legal?
Hola juan!
yo siempre lo he tomado por legal, ya que lo que importa ahí es lo que contengan tus includes..
Un saludo!
¿?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..
..sin recargar implicaria no pasar variables por la url.. algo que tampoco quiero hacer.. Gracias!
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!!
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!
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.
Hola ksper!
Más que con php para recargar partes de la página debes utilizar ajax (javascript), hace unos días escribí un artículo sobre ello:
Ajax: Aprendiendo a cargar contenido en un div.
Échale un vistazo a ver si haces una mejor idea del funcionamiento :)
Saludos!!
Yo lo que quiero es poner una pagina cualquiera: por ejemplo http://google.com.
lo he intentado asi, pero no se puede, he buscado la manera de hacerlo, pero no la encuentro, alguin sabe como hacerlo.. Gracias
Hola. Interesante lo que leí. Estoy urgando los sitios multilenguajes y quiero sacar mis conclusiones de que es lo mejor que se puede hacer para crear dichos sitios.
gracias.
muchas gracias por la informacion me ayudo mucho a entender mas este tema.
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!!!
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
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.