C'est un sujet souvent mal compris par les débutants, donc il vaut mieux ne rien comprendre et demander plutot que comprendre de travers, généralement c'est irrécupérable Smiley langue

Je me lance dans une explications que je vais esseyer de faire claire, mais bon Smiley langue

Ceci dit : quel est ton "niveau" ? sais tu faire une page en xhtml et css ? maitrise tu l'interaction entre ces deux langages ? as tu des bases en php ? ou en programmation autre que xhtml / css ?

C'est parti :

L'idée de départ est la suivante : dans un site généralement seule une partie change de page en page (le contenu généralement). Ta page a donc très souvent plusieurs zone (header, menu, footer) qui se répètent de page en page.

A priori, tu vas écrire tout ça une fois pour toute et ensuite faire un copier coller de toute cette page "modèle" dans toutes tes autres pages. Ensuite tu vas changer le contenu selon la page (généralement tu as un div id="contenu" qui sera alors modifié par exemple).

Seulement c'est lent long et fastidieux, en plus imaginons que tu modifies le menu : comme il est répété sur toutes les pages, tu dois toutes les rouvrir et les modifier à l'identique, bref c'est pas top.

C'est là qu'intervient php. Il va te permettre de générer tes différentes pages "à la volée".

En pratique tu vas pouvoir faire ceci :

- tu crée une page "modèle" (celle que tu copiait collait partout) et tu en retire le contenu

- tu crée ensuite différents fichiers contenant uniquement le contenu d'une page précise

Il faudrait alors pouvoir copier coller automatiquement le contenu correspond à la page que le visiteur demande.

Dans la page modèle, à l'endroit où tu veux mettre le contenu (disons que c'est un div id="contenu") tu vas mettre des instructions php qui se chargeront de :
- récupérer le nom de la page que le visiteur souhaite voir
- en fonction de ça "copier" le contenu du fichier contenu
- ensuite le script php va "coller" ce contenu à l'endroit où il se trouve (le script), justement le script se trouve à l'endroit où le contenu doit prendre place dans la page modèle.

Bref que fais cet include ? exactement ce que tu aurais fait à la main.

Un include n'est rien d'autre qu'un copier coller automatique

C'est très avantageux :

- tu as un et un seul fichier "modèle" : si tu veux modifier le menu de toutes tes pages, tu modifier ce fichier modèle

- tu as des fichiers qui contienent les différents contenu sans toute la "structure" des pages du site, tu peux donc les modifier facilement sans te soucier du restant de la page.

Tout ça est bien beau, en pratique ça ressemble à ça :

Code de la page modèle


//Ici tout le début de la page modèle, qui commence donc par un doctype

// exemple
<div id="contenu">

// ici commence le script php
<?php
include($_GET['page'].'.brocoli');
?>

</div>

// la suite du modèle


Bref, le script est tout simple :

Il inclu (c'est à dire "je récupère le fichier qu'on me dit et ensuite je le recopie tel quel sur place ) le fichier (dont l'extension est .brocoli).

Ce fichier dépend d'une variable "get".

On passe une variable get à une page comme ceci :

disons que ta page modèle s'apelle "essai.php" :

essai.php?page=articles

La variable get "page" prend la valeur "articles".

Ainsi le script va inclure "articles.brocoli".

Que dois contenir le fichier "articles.brocoli" ? le contenu de la page, càd quelque chose du genre


<h2>Page articles</h2>
<p>Blablabla</p>


Par exemple, on voit qu'il ne faut pas mettre <html> etc etc ... mais si tu as bien suivi les explications, et donc que tu as compris ce que fais le script, tu te rend compte que c'est quelque chose de tout à fait logique et immédiat (et pas une "astuce" comme le croient beaucoup de débutant genre "ha ui, astuce, il faut retenir que je ne dois pas mettre <html> " )

J'espère que j'ai pu t'aider Smiley smile
Modifié par Cedric (22 Jul 2005 - 22:46)
Bon, j'ai saisi le principe d'include, merci aux intervenants ci-dessus


on lit dans un forum ceci:
"Je continue à penser que les choses ne sont pas encore assez clairement dites y compris dans ta mise au point.

Il faut à mon sens + insister sur les 2 types d'inclusion en jeu :

Par <iframe> ou <object data="page.html"> une page est incluse dans une autre page et ce dans la fenêtre du navigateur.

Par la fonction include du texte brut est inclut dans la source du document html. le fichier mis en <?php include ?> n'a aucune vocation à être ouvert par le navigateur, ce n'est pas une page, ce n'est pas un document html.

Il n'y a pas à enlever les balises <html> etc ... Car la question de leur présence ne se pose même pas puisqu'il ne s'agit en rien d'une page web.

Une difficulté importante du coup se présente car comment faire comprendre que l'on peut inclure fichier_à_inclure.html (ou fichier_à_inclure.php) mais que fichier_à_inclure.html n'est pas une page alors que très précisemment c'en est une, la preuve c'est que si l'on clique dessus c'est bien le logiciel navigateur qui va l'ouvrir."

Alors si j'ai bien compris, on ne peut qu'inclure du texte et pas des pages html complete avec images avec include, mais c'est possible avec d'autres fonctions?
Pas tout à fait.

Ce qui se passe avec des frames :

Tu as une page "maitre" qui "découpe" la page en plusieurs parties. Dans ces parties sont chargées différentes pages html. Chacunes de ces pages est une page à part entière, la page maitre à découpe le navigateur en plusieurs parties.


Par contre le rôles des includes php est très différent.
C'est une fonction tout à fait "neutre" (rien n'est présumé quant à son utilisation) . Elle existe par ailleurs dans quasiment tous les langages.
Son rôle est extrèmement simple :

inclure un fichier dans un autre, càd coller le fichier à inclure à l'endroit où se trouve l'include.

Simple, clair et net : c'est un copier coller automatique.

Par exemple,en php ou en C++, j'inclu toujours un fichier qui contient des fonctions que je réutilise tout le temps : le code de ces fonctions est coller à cet endroit.

On peut aussi utiliser des include pour se bricoler un système de "modèle" comme tu esseyes de le faire .

Ce qu'on fait c'est qu'on découpe la page html en plusieurs morceaux et qu'on les assemble ensuite en collant le bon morceau au bon endroit. On se rend encore une fois facilement compte qu'il ne faut pas mettre de <html> dans chaque partie par exemple... (puisqu'on a découpé la page en morceau, chaque morceau ne contient que des bouts de html).
Bonjour à tous !.

Je profite de ce post, pour poser une question.
J'aimerais savoir la différence entre

// exemple
<div id="contenu">

// ici commence le script php
<?php
include($_GET['page'].'.brocoli');
?>

</div>


et sa tout simplement

<? 
include('brocoli.inc'); 
?>

Je vous remercie.
C'est agaçant, cette manie du brocoli Smiley lol

Ton premier exemple collera le contenu HTML du fichier patati.brocoli dans l'élément <div id="contenu"> de la page d'adresse (...)ma_page.php?page=patati

Ton second exemple collera dans une page (...)mapage.php le contenu HTML du fichier brocoli.inc

Le tout sous réserve que patati.brocoli et brocoli.inc soient situés dans le répertoire (...) de la page en question.

Dans les deux cas, mapage.php sera finalement, avant envoi au navigateur, une bête page HTML toute plate.
Modifié par Laurent Denis (27 Jul 2005 - 13:45)
je suis en train de faire ce tuto, mais j'ai pas tout compris moi aussi.

J'ai essayé plein de façon différente, et impossible de faire marcher ça.

Bon j'ai bien compris le principe je pense pourtant. Ma page principale a bien l'extension .php (Test_01.php pour etre exacte)

Voici son code :

<!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>Bienvenue sur le site de MétéOBell ! Accueil</title> <!--Titre de la page-->
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <!--language html en Francais-->
       <link rel="stylesheet" media="screen" type="text/css" title="Design Accueil 001" href="styles/meteobell_accueil_002.css"/> <!--Lien fichiercss-->
   </head>
	
	<body>	

<div id="onglets">	
<ul>

	<li class="onglet_01"><a href="Test_01.php?page=a_propos">A propos</a></li>
	<li class="onglet_02"><a href="Test_01.php?page=news">News</a></li>

</ul>
</div>

<div id="introduction">	

<?php 
if (!isset($_GET['page'])) $page= 'a_propos'; else $page= $_GET['page']; 
 switch($page)
{
case 'a_propos': include ('a_propos.txt');break;
case 'news': include ('news.txt');break;

} 
?>
    

	<div class="bloc_central_01">
           Bonjour et bienvenue sur le site d'un passionné de Météo.          
	</div>


	
</div>

	</body>
</html>


Mais c'est pour les autres pages que j'ai un probleme.
Comment je la nomme. là j'ai pas tout compris.

Prenons l'include news par ex :



.news
.news.txt
page.news
.news.htm
news.htm
news.txt

et j'en passe et des meilleures.....

de plus je retire les balises body, html et tout le toutim. Bizare......

	<div class="news">
       <h3>Les News</h3>
       <ul>   
	   
	   
	   
            <li>Orage Improbable du 06 Juin 2005 <br /><span class="texte_normal01"> Ajouté le 15-09-05</span><br />
		   <div class="texte_normal02"><br />Actuellement, seul le dossier "Orage Improbable du 06 juin 2005" est achevé. Il s'agit, au jour d'aujourd'hui, de mon dossier le plus complet et le plus extraordinaire qu'il m'est été amené de voir. Mais je vous laisse le découvrir.<br /><br /> 
	       De plus, une charte qualité a été ajoutée à MétéOBell. En effet l'ensemble du site a été mis en conformité avec le W3c. Organsime gérant les normes du langage Xhtml et Css (Voir la rubrique "Technique").<br /><br />
			J'ai effectué de plus, quelques mises à jour graphique du site. L'ergonomie de MétéOBell a donc évolué. J'espère que cela vous plaira.<br /><br />
			</div></li>
		   
		   	<li>Ouverture du Site :<br /><span class="texte_normal01"> Ajouté le 08-09-05</span><br />
		   <div class="texte_normal02"><br /> Ca y est ! J'annonce l'ouverture officielle de MétéOBell.com, hébergé sur <a href="index.html" onclick="javascript:window.open('http://www.ovh.com')"title="Hébergement et Solutions Internet - Service Payant">OVH.com/fr</a>.  [lol]<br />
		   Tout n'est pas fini, que ce soit dans la création des rubriques ou du graphisme. Je ferais une mise à jour prochainement, pour corriger quelques bugs. De plus, les parties Présentation, Communautée et Album Photo, ne sont pas encore opérationelles.<br/><br />
		   La partie située en-dessous sur cette page d'accueil, constitue la version 1 du site. Et oui, même pas lançé que déjà le site est en version 2 aujourd'hui, caractérisé par la présence des menus et de la rubrique news que vous lisez en ce moment.<br />
		   Je garde tout de même cette première version, car je trouve qu'elle permet d'expliquer un peu ce qu'est MétéOBell ou plutôt ce qu'il deviendra au fur et à mesure.<br /><br />
			Les rubriques déjà ouvertes évolueront également, comme par exemple la partie technique ou le glossaire auquel s'ajoutera des schémas, et surtout la partie "Orages - Comprendre en Photo", coeur du site MétéOBell, auquelle sera régulièrement inscrit d'autres dossiers que j'ai en réserve.<br /><br />
		   </div></li>
		   
		   <li>Construction du Site :<br /><span class="texte_normal01"> Ajouté le  17-07-05</span><br />
		   <div class="texte_normal02"><br /> C'est la date où j'ai commencé à construire MétéOBell, grâce au <a href="index.html" onclick="javascript:window.open('http://www.siteduzero.com')" title="Site réservé aux débutants">Site du Zér0</a> qui m'a servi de tutorial.<br /><br />
		   J'ai donc appris petit à petit à fabriquer ce site. Mais pas de panique ! Ca va évoluer. ;o)<br /><br />
		   </div></li>
   
	   </ul>
	</div>


Comme vous l'avez surement remarqué j'ai pas tout compris, et le tuto est pas très très clair.....

Pliiiizzzze Help me Smiley sweatdrop Smiley confus
Administrateur
Damonya a écrit :

Mais c'est pour les autres pages que j'ai un probleme.
Comment je la nomme. là j'ai pas tout compris.

Ce n'est pas du hasard, ton code donne lui-même la réponse :
case 'a_propos': include ('a_propos.txt');break;
case 'news': include ('news.txt');break;

Smiley cligne
Modifié par Raphael (22 Sep 2005 - 16:50)
C donc un fichier texte tout simple ? Pourtant j'ai essayé en nommant mon fichier news.txt et là non plus ca marche pas......

A quoi sert le nom "page" dans ce cas ?

Cette partie là j'ai pas compris je pense :
a écrit :
Tant que la page insérée n'est pas inclue, les liens de la sorte : href="toto.htm" vont rechercher le fichier toto.htm dans le répertoire "galerie".
MAIS, dès que la page est inclue, elle appartient totalement à la page conteneur, il va donc chercher toto.htm ... à la racine !
Conclusion : le meilleur moyen de s'en sortir avec les include est d'utiliser des liens absolus dans les pages inclues (href="http://www.monsite.com/repertoire/lien.htm" et NON href="lien.htm".


Je me suis peut être lancé dans un truc sans le savoir qui dépasse mes compétences. Je suis un peu perdu......
Modifié par Damonya (22 Sep 2005 - 16:57)
Pour simplifier, de ce que j'ai fini par comprendre : ta page se construit à partir des différents éléments que tu appelles (includes), dans un "templates" ou "squelette" ou "page_type".
Donc, il n'existe qu'une page dont le contenu est variable, "appelé".
Il te faut donc bien faire attention au "chemin" donné pour aller chercher un élément ou un autre, dans ton site, la "page initiale" étant à la racine de ton site, et les différents éléments "appelés" dans différents dossiers...
Ok alors j'ai mis pour tester sur mon ftp en mettant un lien absolu :

<?php 
if (!isset($_GET['page'])) $page= 'news'; else $page= $_GET['page']; 
 switch($page)
{
case 'a_propos': include ('href="http://www.meteobell.com/PHP/a_propos.txt');break;
case 'news': include ('href="http://www.meteobell.com/PHP/news.txt');break;

} 
?>



Car pour l'instant je testais en local. Du coup y'a même plus le css et voilà ce qu'il me met :

page Test_01.php

Je crois que je vais abandonner cette idée sinon....Dommage j'y ai passé la journée Smiley langue
Modifié par Damonya (22 Sep 2005 - 17:51)
Ben il aurait peut-être fallu remplacer "Mon_Site" par le nom de ton site, non ? (ou plus précisément son adresse URL ...
?? F:\Mon Site\ et là y'a tous mes répertoires dans mon disque dure. Mais ça rien à voir ??

De toute façon impossible de renommer ce fichier il est maintenant protégé ou je ne sais quoi. Enfin il veut pas quoi....

Mais de toute façon c'est indépendant de mon fichier ftp ?

Oh bon j'abandonne. Laissez tomber. Ca devient trop compliqué et pis j'en ai marre de me prendre la tête.....Comprend rien ca m'enerve.... Smiley fache

Faut vraiment que vous fassiez une mise à jour du tuto, parce qu'il est pas clair du tout.....
Modifié par Damonya (22 Sep 2005 - 19:24)
Alors j'ai appris deux choses après des arrachages de cheveux....

- que j'ai besoin d'un logiciel pour tester en local
- et que ovh me permet déjà de gérer le php sans probleme sur mon ftp, suffit juste que je mette les bons fichiers.

Maintenant que j'ai compris le principe, j'ai plus qu'à m'y mettre.....et plus sur une simple page de test.....

Alors là, moi je dis, je suis super con de chez con, vraiment.....

Mais si ds le tuto, une simple phrase genre, "vous avez besoin d'un logiciel php pour que cela marche" avait été mis, cela m'aurait éviter de me prendre la tête pendant près de 7 heures d'affiller en étant persuadé qu'il y avait un probleme de nom de fichier ou de code Smiley fache Si vous saviez comment j'ai cherché. J'ai dut faire 20 pages de tuto dans google pour trouver la réponse. Smiley langue alors que je regardais pas dans la bonne direction Smiley biggol

Parce que bien évidemment moi je testais qu'en local et sans le logiciel Smiley sweatdrop
Modifié par Damonya (22 Sep 2005 - 22:42)
Bah finalement je suis passé à autre chose que le php!

PS:Comment faire pour fermer et rendre un sujet "résolu" ici ?
PS2: rhââââh *Raphael*
Modifié par gilles123 (23 Sep 2005 - 06:31)
Salut,

Le php est un langage qui tourne sur le serveur de ton hébergeur (contrairement au javascript par ex qui tourne en local sur ton PC) donc chaque fois que tu ajoutes un bout de php dans ta page, si tu veux tester en local il te faut bien sûr easyphp (ou wamp ou autre équivalent) !
Ne te décourage pas, une fois qu'on a pigé le include et qu'on l'a fait marcher une fois ça va tout seul...mais comme à chaque fois en informatique la moindre erreur est rédhibitoire!
Sinon pour mettre résolu tu édites ton post avec le bouton en haut à droite et tu ajoutes à la mano [résolu] devant ton titre Smiley cligne
Modifié par zanzibar (23 Sep 2005 - 08:50)