Bonsoir : je m'explique.

Avec l'aide des participants de ce forum ( ils se reconnaitront), j'ai réussi à avancer mon site et à mettre en oeuvre l'inclusion d'un fichier dans un autre.

Et comme j'en veux toujours plus, le fichier inclus est lui même un fichier php devant également inclure d'autres fichiers ( et là cela ne marche plus !!!)
Le premier fichier qui marche ( accueiltest.php)
--> j'inclus le fichier "Archives/delivrance/delivrance-accueil.php" avec case=delivrance, jusque là cela fonctionne.

Mais c'est la suite, le fichier delivrance-accueil est lui même un fichier avec des includes, qui là ne fonctionnent plus.

Ce que je souhaite faire, les liens presentation-edition-exposition-diaporama doivent ouvrir dans la même fenetre que le 1er include.

En plus clair, peut-on faire un include qui fasse lui même appel à un include etc.

Je vous joins les codes au cas ou !!!!

le css
[code]/* CSS  frederic-cornu */
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 0.8em;
margin: 10px;
background-color: #999;
padding: 0;
}
#header {
height: 10%;
margin-top: 1%;
margin-left: 14%;
margin-right: 12%;
background-color: #fff;
}
#conteneur {
position: absolute;
width: 100%;
height: 700px;
background-color:#e8e8e8;
overflow: auto;
}
#centre {
margin-left: 14%;
margin-right: 12%;
width: auto;
height: 80%; /* j'ai mis à 50% pour éviter la barre de défilement */
background-color:#fff;
overflow: auto;
}
#gauche {
position: absolute;
left:0;
width: 14%;
}
#droite {
position: absolute;
right:0;
width: 12%;
background-color:#666;
}
#pied {
height: 10%;
margin-top: 1%;
margin-left: 14%;
margin-right: 12%;
background-color: #fff;
}
#menu ul
{
margin: 0 2px;
padding-left: 0;
list-style-type: none;
font-family: Arial, Helvetica, sans-serif;
}
#menu a
{
display: block;
padding: 3px;
width: 70%;
background-color: #bbb;

}
#menu a:link, #navlist a:visited
{
color: #EEE;
text-decoration: none;
}
#menu a:hover
{
background-color: #999;
color: #000;}



p {margin: 0 0 10px 0;}

ul#navlist
{
margin-left: 10;
padding-left: 0;
white-space: nowrap;
}

#navlist li
{
display: inline;
list-style-type: none;
}

#navlist a { padding: 3px 10px; }

#navlist a:link, #navlist a:visited
{
color: #fff;
background-color: #888;
text-decoration: none;
}

#navlist a:hover
{
color: #fff;
background-color: #369;
text-decoration: none;
}



le html de accueiltest

[/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" lang="fr">
<head>
<title>accueil site</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design"href="GenerateurDesign/design.css" />


</style>
</head>
<body>
<div id="conteneur">

	<div id="header">
	
	</div>
	
	<div id="gauche">
	<p><strong> Travaux Récents </strong>
	<p>
	  <dl id="menu">

			<ul id="navlist">
				<li id="active"><a href="accueiltest.php?page=2006" id="current">2006</a></li>
				<li><a href="accueiltest.php?page=Anti-Stars">Anti-Stars</a></li>
				<li><a href="accueiltest.php?page=Sportifs">Sportifs</a></li>
				<li><a href="accueiltest.php?page=Balneaires">Balnéaires</a></li>
			</ul>
		</dl>
	<p><strong> Archives </strong>
	<p>
	  <dl id="menu">
			<ul id="navlist">
				<li id="active"><a href="accueiltest.php?page=Frères Humains" id="current">Frères Humains</a></li>
				<li><a href="accueiltest.php?page=Delivrance">Delivrance</a></li>
				<li><a href="accueiltest.php?page=Cours">Cours</a></li>
				<li><a href="accueiltest.php?page=Charitables">Charitables</a></li>
				</ul>
	  </dl>
		<p> mettre un blanc <p>
		<dl id="menu">
			<ul id="navlist">
				<li id="active"><a href="accueiltest.php?page=Biographie" id="current">Biographie</a></li>
				<li><a href="accueiltest.php?page=Collection">Collection</a></li>
				<li><a href="accueiltest.php?page=Edition">Editions</a></li>
				<li><a href="accueiltest.php?page=Contact">Contacts</a></li>
			</ul>
		</dl>
	</div>
	<div id="centre">
	<?php 
	if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page']; 
	switch($page)
	{
	case '2006': include ('Travaux Recents/2006/2006-accueil.php'); break;
	case 'Anti-Stars': include ('Travaux Recents/Anti-Stars/Anti-Stars-accueil.php'); break;
	case 'Sportifs': include ('Travaux Recents/sportifs/sportifs-accueil.php'); break;
	case 'Balneaires': include ('Travaux Recents/balneaires/balneaires-accueil.php'); break;
	case 'Frères Humains': include ('Archives/freres humains/freres_humains-accueil.php'); break;
	case 'Delivrance': include ('Archives/delivrance/delivrance-accueil.php'); break;
	case 'Cours': include ('Archives/cours/cours-accueil.php'); break;
	case 'Charitables': include ('Archives/Charitables/Charitables-accueil.php'); break;
	case 'Biographie': include ('Sections/Biographie/Biographie.html'); break;
	case 'Collection': include ('Sections/Collection/collection.html'); break;
	case 'Edition': include ('Sections/Edition/Edition.html'); break;
	case 'Contact': include ('Sections/Contact/Contact.html'); break;
	case 'accueil': default: include ('accueil.php'); break;
	} 
	?>
	</div>
</div>

</body>
</html>


et celui qui ne veut pas fonctionner.

[code]



<ul id="navlist">
<li id="active"><a href="Archives/delivrance/delivrance-accueil.php?page=Présentation" id="current">Présentation</a></li>
<li><a href="accueiltest.php?page=Exposition">Exposition</a></li>
<li><a href="accueiltest.php?page=Edition">Edition</a></li>
<li><a href="accueiltest.php?page=Diaporama">Diaporama</a></li>
</ul>


	<h1><img src="Archives/Delivrance/Delivrance-Photos/img_delivrance_accueil.jpg" width="380" height="186" hspace="150" vspace="100" align="middle"></h1>
	

	<div>
	<?php 
	if (!isset($_GET['page'])) $page= 'accueil'; else $page= $_GET['page']; 
	switch($page)
	{
	case 'Présentation': include ('Archives/Delivrance/delivrance-presentation.html'); break;
	case 'Exposition': include ('Archives/Delivrance/delivrance-exposition.html'); break;
	case 'Edition': include ('Archives/Delivrance/delivrance-edition.html'); break;
	case 'Diaporama': include ('Archives/Delivrance/delivrance-diaporama.html'); break;
	case 'accueil': default: include ('pagepasencoredefinie.html'); break;
	} 
	?>
	</div>
Bonjour,

N'y aurait-il pas une histoire liée à cela :

Extrait du tuto sur les includes php a écrit :

Note sur la fonction include : cette instruction est TRES différent des frames ou iframes : elle ne simule pas l'insersion, mais insère vraiment tout le code de la page... et les liens de la page inclue se calculent alors à partir de la page conteneur. Supposons que la page conteneur se trouve à la racine et que la page insérée se trouve dans le répertoire "/galerie".
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".


Mais c'est purement intuitif ...
Si dans ton fichier de base tu inclus /machin/truc/include1.php,
Et que depuis /machin/truc/include1.php tu veux inclure /machin/truc/include2.php, il faut juste penser que la base du chemin de l'include est le fichier de base, même si le code de l'include est dans /machin/truc/include1.php

Bref, il faut mettre à chaque fois le chemin depuis le premier fichier (le "parent" des autres).

Par contre je pense qu'utiliser un lien absolu en http://www.monsite.com/machin/truc/include2.php est une erreur. Ça demande au serveur qui traite ton code PHP d'aller interroger un serveur (lui-même, en l'occurence) en HTTP, et là tu perds du temps. Il vaut mieux utiliser des liens "semi-absolus" depuis la racine du site :
/machin/truc/include2.php

Mais je ne sais pas trop comment ça marche à vrai dire Smiley biggrin
+1 avec mpop

le tout est de visualiser à partir d'où l'adresse (relative) de quelque include que ce soit doit être comprise.

Par contre mpop pour les adresses absolues, non ce n'est pas du tout comme ça que ça se passe. l'une comme l'autre des expressions que tu évoques ne fonctionnent pas.
Salut,

Si je me souviens bien, ton site devrait faire 200 à 300 pages et tu te soucies pas mal du référencement.
Il faudrait alors déjà que tu puisses donner un titre différent à chacune des pages, et même une description et des mots clés, ce qui n'est pas le cas pour l'instant. C'est possible en complétant un peu ta méthode, mais franchement, pour un site de 200 pages, ne serait-il quand même pas mieux de recourir à une base de données ?
Modifié par Alan (09 Apr 2006 - 05:17)
Merci de vos reponses, je vais revoir mon adressage.

Par contre Alan, chapeau de te souvenir de mon projet, et peux tu m'en dire un peu plus sur ce que tu entends par base de données.
As tu un tuto à me conseiller ?

Merci
En attendant de potasser les BDD comme conseillé par Alan, j'ai essayé de modifier mes liens mais cela ne marche toujours pas.

ESt ce qu'un pro du forum a essayé mon soft ??
C'a m'énerve !!

Mes premiers pb avec la fonction include, j'avais tout simplement oublié de lancer mon serveur PHP, bon pas malin je reconnais.

Mais aujourd'hui, alors que mon premier include fonctionne trés bien, impossible d'en inclure un deuxième. J'ai essayé tous les types d'adressage, rien à faire. Et cela fait la troisième soirée que j'y passe !!!

Quelqu'un n'aurait pas une idée ?
bon apparement personne n'a de solutions.
En as tu trouvé une Fred de Lille ?

Ca serait super cool que oui et que tu puisses la partager avec moi !!!!

Smiley biggrin
En fait je trouve bizarre que la réponse au problème de ce sujet ne soit pas vraiment connue ou claire car la navigation d'alsacréation se fait d'une part avec le menu en head et un menu sur la droite (liste des tutoriels et tout ça...).
Quand on clique sur un choix du menu de droite, un nouveau contenu apparait au milieu, c'est qu'il y a une solution (qui n'est peut etre pas de faire des include dans des include ).

Si un des gentils administrateurs créateurs de ce merveilleux sites pouvait m'éclairer ? Smiley murf

Merci
Salut

Il y a la solution "simple" d'utiliser des cadres (frames) pour réaliser cela. Ce n'est pas trop accessibles et il faut utiliser le bon doctype.

Tu peux encore appercevoir ici un site "frame" absolument pas au normes (désolé, je viens juste hier de virer mon site valide en frame Smiley nut )

Une solution alternative utilise des iframes... Guère mieux...

La meilleur (?) solution et sûrement celle utilisée ici est celle des "pseudos frames" (terme inadéquat!!!) qui est expliquée dans la partie 3 du lien vers le site du zéro un peu plus haut ou ici même sur le principe de l'inclusion

Sans oublier que les frames, c'est mal !!! Smiley biggol
Modifié par Bob (MC Melun) (20 Apr 2006 - 15:43)
Bob (MC Melun) a écrit :
"pseudos frames" (terme inadéquat!!!)


Terme très joli et amusant tant que l'on comprend que les pseudo frame ne sont qu'un petit jeu possible avec les css.

Quand on parle de pseudo frame php alors là on s'enfonce dans l'absurdité et le non sens les plus complets.

Au passage et de mémoire, le cours php du site du zéro est un excellent antidote contre ce genre de dérive (en fait pour ma part ça m'a ouvert les yeux sur cette problématique), ce que ne fait pas phpdebutant et là c'est une erreur qui, quand on voit avec quel appétit le terme (pseudo frame) est repris de partout, confine au désastre.
J'ai trouvé une solution (détournée) au probleme des includes dans include mais qui n'est pas encore optimale.
En fait, j'ai mis mon header et mon menu horizontal dans un fichier que j'inclus dans toutes les pages que j'appelle grace au menu. Ensuite dans ces pages la j'utilise la méthode include pour un nouveau menu dans un cadre sur la droite.
Ca fonctionne bien. Le seul problème est que je n'ai pas de pages d'accueil, car si je la définis dans mon fichier qui contient l'header et le menu horizontal, ce contenu apparaitra forcément dans toutes les pages appelées......
Un peur dur à expliquer, j'espère que vous me comprenez.

Donc en fait maintenant il faut que je me débrouille pour pouvoir mettre du contenu dans la page d'accueil qui n'apparaitra pas dans toutes les pages....
une idée ?? Smiley rolleyes
Modifié par Oook (21 Apr 2006 - 09:49)
eh bien la fonction switch de php est ton ami :
switch ($page){
case 'blabla1' : include('blabla1.php');break;
.
.
.
[b]default : include('accueil.php');break;[/b]
}


Ainsi tous les cas sont listés, et tout autre cas ($page non précisée comme c'est le cas quand on vient sur le site pour la première fois, utilisateur tapant n'importe quoi dans l'url) c'est la page d'accueil qui s'affiche Smiley cligne

Et pour répondre à ta première question, (si je l'ai bien compris) le include qui se trouve lui même dans un fichier inclus doit être adressé à partir de la page dans la quelle il a été inclus.
Par exemple tu inclus un header dans ta page, qui lui-même inclus la meta de description :
les fiichiers ont l'aborescence suivante :
index.php
inclus/header.php
inclus/desc.php

dans index.php on trouvera :

include(inclus/header.php);
...
...
...


et dans header.php on aura

...
include(inclus/desc.php);
...
...


et non pas comme tu l'as peut-être fait, include(desc.php);
Voilà j'espère avoir répondu à ta question, sinon n'hésite pas à repréciser Smiley cligne
Modifié par Freedom_09 (21 Apr 2006 - 10:07)
En fait j'avais pas tout compris à l'histoire de l'adressement relatif, je vais réessayer.

Sinon le switch php n'est pas mon ami dans mon cas ou alors je vois pas comment l'utiliser.

un peu de code pour etre plus explicite :

<!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" lang="fr">
	<head>
		<title>Portail Intranet du SNA Nord</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
		<meta http-equiv="Content-Style-Type" content="text/css" />
		<meta http-equiv="Content-Language" content="fr" />
		<link href="sna.css" rel="stylesheet" type="text/css" />

	</head>
	
	<body>
	<div id="conteneur">		
		<h1 id="header">  </h1> 

		<ul id="menu">
			<li><a href="index.php?page=accueil">Accueil</a></li>
			<li><a href="adminsna.php">SNA</a></li>
			<li><a href="lilledivtech.php">Technique</a></li>
			<li><a href="lilleca.php">Circulation</a></li>
			<li><a href="">Recherche</a></li>
		</ul>


Voila mon fichier inclus dans tous les autres, qui contient mon header et mon menu horizontal.

Dans chacune des pages appelées, j'inclus ce code là et j'utilise un autre menu qui fonctionne avec des include php(qui fonctionne).

Voila !
J'ai trouvé ma bidouille pour gérer mon problème de page d'accueil.

Je récupère le nom de la page en cours avec $_SERVER['SCRIPT_NAME']
et ensuite je teste le nom : si c'est celui de mon index, j'inclus ma page d'accueil général, sinon je fais rien.

Ca a l'air de fonctionner, je m'attends à avoir des problèmes plus tard en intégrant d'autres choses ! Smiley biggrin

Merci !