Bonjour tout le monde. J'écris ce message car je réalise un site web, et je cherchais un tutoriel concernant la gestion des pages avec une fonction "include".
Ce tutoriel existait il y quelque mois, mais je ne le trouve plus. Il faisait appel à une fonction php un peu comme celle ci :
<?php 

$pages=array(
   
   'pageX'=>'inc_pageX',
   'pageY'=>'inc_pageY'
);
if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
   include $pages[$_GET['page']]'.php';
else
   include 'inc_accueil.php'; // ou une page d'erreur inc_erreur.php
?>


Mais je n'arrive pas à la faire fonctionner. Merci d'avance pour votre aide.
Florent V. a écrit :
Bonjour,

Ce tutoriel a été remplacé par celui-ci: Inclure un fichier dans un autre grâce à PHP. Par contre, le nouveau tutoriel ne fonctionne pas sur le même principe (pas de fichier index.php unique).

Est ce que ce fonctionnement est mieux que l'ancien tuto ?

Car j'ai appris à utiliser les includes via l'ancien tuto, le fait de n'avoir plus qu'un seul index.php change t'il quelque chose à par le poids des pages ?

Smiley smile
yank a écrit :
Est ce que ce fonctionnement est mieux que l'ancien tuto ?

Heu... comme toujours: ça dépend.

Si tu veux pouvoir personnaliser le titre de tes pages sans trop te casser la tête, ça aide de pouvoir faire un fichier articles/mon-super-article.php avec un en-tête comme suit:
<?php

$root = $_SERVER['DOCUMENT_ROOT'];
include($root.'/inc/doctype-and-html.php');

?>

<head>
	<title>Mon super article</title>
	<meta name="description" content="...">
	<?php include('$root./inc/head-content.php'); ?>
</head>

<?php include('$root./inc/body-and-header.php'); ?>

<?php include('$root./inc/navigation.php'); ?>

<div id="content">...</div>

<?php include('$root./inc/footer-and-end-body-html.php'); ?>

On pourrait faire la même chose en reléguant une partie moins importante de la structure HTML dans les fichiers à inclure, ce qui peut donner:
<?php

$root = $_SERVER['DOCUMENT_ROOT'];
include($root.'/inc/doctype.php');

?>

<html lang="fr">
<head>
	<title>Mon super article</title>
	<meta name="description" content="...">
	<?php include('$root./inc/head-content.php'); ?>
</head>

<body>
<div id="global">
	<?php include('$root./inc/header.php'); ?>
	<?php include('$root./inc/navigation.php'); ?>
	<div id="content">...</div>
	<?php include('$root./inc/footer.php'); ?>
<div><!-- #global -->
</body>
</html>


L'autre avantage, c'est que l'on a des noms de pages plus facilement maitrisables (on crée son arborescence de dossiers, on place ses pages PHP... comme avec des pages HTML statiques mais en mettant tout de même en commun certains éléments dont on ne duplique pas le code). Si on passe par un script PHP unique, il faudra utiliser de l'URL Rewriting pour arriver à un résultat similaire (c'est à dire: des URL lisibles par les visiteurs).

La méthode plus simple du nouveau tutoriel offre donc une certaine souplesse. Faire la même chose avec un fichier index.php unique demandera des connaissances un peu plus avancées en PHP.
Bonjour à tous,

Je suis nouvelle sur ce forum, et je débute ou presque pour ce qui est de la création de site.

Je débute surtout en PHP, et j'ai lu votre tutoriel sur la fonction include avec intérêt. J'ai l'impression que la question que je me suis posée à la page 3 de ce tutoriel rejoint ce que vous expliquez ici, c'est pourquoi je ne crée pas de nouveau sujet.

Si l'on veut que chaque page d'un site ait un <title> différent, tout en utilisant la fonction <include> pour éviter d'avoir à répéter ce qui revient sur chaque page, est-il possible de faire quelque chose de ce genre:

Sur chaque page du site,
• utiliser la fonction <include> pour insérer une page header1.inc.php contenant le doctype et la première balise <meta> de <head>;
• puis taper les balises <title>, <meta description> et <meta keywords>, avec le contenu propre à la page en cours;
• puis utiliser une nouvelle fonction <include> pour insérer une page header2.inc.php contenant le reste de <head>, ainsi que les <div> où apparaissent l'image-bandeau et les menus de navigation.

Merci par avance de vos réponses.
Modifié par romilly (24 Jun 2008 - 12:04)