Alain Barraud Mémento informatique  
 
Accueil Logithèque - SE Photo - vidéo Internet - protocoles Site Web PC - Réseau Archives
Page ouverte le 22/02/2010
retour sommaire PHP
Logo PHP

Inclure des portions de page


Une des fonctionnalités les plus simples et des plus utiles est l'inclusion de page. On peut très facilement inclure toute ou une partie de page dans une autre page.
Cela évite de copier x fois le même code (pour les en-têtes, les menus,etc…).
Autre avantage, si on veut modifier son menu par exemple, au lieu d'apporter cette modification sur chaque page, il suffira de modifier le fichier "menu.php".

La pratique

Pour exemple, créons un fichier PHP pour y insérer uniquement le code HTML correspondant au menu :
Code PHP
    <div id="menu">
        <div class="element_menu">
            <h3>Titre menu</h3>
            <ul>
                <li><a href="page1.html">Lien</a></li>
                <li><a href="page2.html">Lien</a></li>
                <li><a href="page3.html">Lien</a></li>
            </ul>
        </div>
    </div>
alt Une page PHP peut très bien ne contenir aucune balise PHP (rare). Dans ce cas, cela devient une page XHTML classique qui n'est pas modifiée avant envoi.
En théorie, on aurait pu enregistrer cette page en .html, mais, pour ne pas mélanger des pages .php et .html, mieux vaut ne travailler qu'avec des pages .php.

Ceci fait, reprendre les pages de notre site, par exemple la page d'accueil nommée index.php. Remplacer le code menu par le code PHP suivant :
Code PHP
    <?php include("menu.php"); ?>
Cette instruction demande à l'ordinateur : "Insère ici le contenu de la page menu.php".
alt Contrairement à echo, on a mis des parenthèses autour des guillemets. echo était une exception.
include, en réalité, comme echo, a une structure de langage particulière et peut s'utiliser avec ou sans parenthèses.

Ce qui pourrait donner en remplaçant chaque code source répétitif par un "include" :
Code PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
        <title>Mon site</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>

        <?php include("entete.php"); ?>

        <?php include("menus.php"); ?>

        <div id="corps">
            <h1>Mon site</h1>

            <p>
                Bienvenue sur mon site<br />
                bla, bla, bla…
            </p>
        </div>

        <?php include("pied_de_page.php"); ?>

    </body>
</html>

alt Ce code suppose que la page index.php et celles qui sont incluses (comme menu.php), sont dans le même dossier.
Si menu.php avait été dans un sous-dossier appelé "includes", il aurait fallu écrire :
<?php include("includes/menu.php"); ?>. Idem qu'en XHTML.

Voici le schématiquement ce qui se passe :
schémas insertion PHP