Salut à tous,

j'ai déjà résolu quelques problèmes via le forum et ceci avec une étonnante rapidité, j'espère qu'il en sera de même pour cette question qui ne devrait pas poser de problèmes à certains chevronnés... Smiley smile

J'aimerais connaitre la marche à suivre pour afficher les différentes parties de mon menu (quand on clique sur les liens) dans un conteneur de ma page, sans être obligé de recharger celle-ci en entier (ne modifier dans mon conteneur que ce qui change sur la page).
Merci d'avance à ceux qui voudront bien tester mon code et me débloquer Smiley smile

Voici mon code html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>La Plateforme Android</title>
<link rel="stylesheet" type="text/css" href="style.css">
<!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css"><![endif]-->
</head>
<body>
<!-- L'entête de la page, affiché tout en haut de l'écran : -->
<div id="entete">
<h1>La Plateforme Android</h1>
<!-- Le menu principal du site, affiché horizontalement: -->
<ul id="menu">
<li><a href="#">Accueil</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
<!-- La page en elle-même : -->
<div id="page">
<!-- Le sous-menu, affiché dans une colonne sur la gauche du site : -->
<div id="sous-menu">
<p class="grand_titre">La Plateforme Android</p>
<p class="sous_titre"><a href="">Pr&eacute;sentation g&eacute;n&eacute;rale</a></p>
<p class="sous_titre"><a href="">Architecture</a></p>
<p class="sous_titre"><a href="">Interface, fonctionnalit&eacute;s</a></p>
<p class="grand_titre">Communaut&eacute;/Concurrence</p>
<p class="sous_titre"><a href="">Etat de l'art</a></p>
<p class="sous_titre"><a href="">Comparaisons</a></p>
<p class="grand_titre">Enjeux et strat&eacute;gie de Google</p>
<p class="sous_titre"><a href="">Positionnement</a></p>
<p class="sous_titre"><a href="">Bataille des fr&eacute;quences</a></p>
<p class="sous_titre"><a href="">Un m&eacute;dia pour la publicit&eacute;</a></p>
</div>
<!-- Le contenu utile de la page : -->
<div id="contenu">
<h2>Pr&eacute;sentation g&eacute;n&eacute;rale</h2>
<h3>L'id&eacute;e</h3>
<p>Android veut être le point de ralliement des développeurs, des opérateurs et des fabricants de terminaux
</p>
</div>
<!-- Le pied de page : -->
<div id="pied">
Paragraphe de copyrights...
</div>
</div>

</body>
</html>

et la feuille CSS qui est liée:

body {
	background: white;
	margin: 10px 250px;
	font-family: sans-serif;
	font-size: small;
}
#entete{
	width : 750px; 
	background: #97C024;
	border-bottom: none;
}
h1{
	background: #97C024;
	color: white;
	word-spacing: 1em;
	letter-spacing: 3px;
	height: 150px;
	line-height:150px;
	text-align: center;
	font-size: xx-large;
}
#menu {
	background: #3570F5;
	list-style: none;
	margin: 0; 
	padding: 0;
	height: 30px;
	line-height:30px;
}
#menu li {
	float: left;
	margin: 0 10px;
}
#menu a {
	text-decoration: none;
	color: white;
	cursor: pointer;
}

#page {
	width : 748px;
	background: white;
	border: 1px solid #454545;
}
#sous-menu {
	height: 450px;
	background: #EEEEEE repeat-y;
	float: left;
	width: 198px;
	margin-top:0;
	margin-left: 0;
	padding:10px;
}
#sous-menu a{
	text-decoration: none;
	color: #666666;
}
.grand_titre{
	margin-top: 40px;
	margin-left: 4px;
	margin-bottom: 5px;
	color: blue;
	font-weight: bolder;
}
.sous_titre{
	padding: 0;
	margin-left: 4px;
}
#menu a:hover, #sous-menu a:hover,
#menu a:focus, #sous-menu a:focus,
#menu a:active, #sous-menu a:active
{
	color: black;
}
#contenu{
	margin-left: 220px;
	padding: 15px;
}
p{
	text-align: justify;
}
#pied{
	clear:both;
	border-top: 1px solid #454545;
}

Modifié par remenems (15 Feb 2008 - 16:54)
Je pense que ta question a plus lieu d'être côté codage (php par exemple) que dans le design et le CSS.

Tu as toujours l'ancienne (mais si accessible) option de la frame (mais ca ne sera qu'une simulation d'nisertion, mais je te conseille personellement de gérer cela à l'aide d'un include () (qui lui injecte l'intégralité du fichier)

=> Le point sur la fonction PHP include
Modifié par neya (13 Feb 2008 - 08:37)
Tu as raison, je vais déplacer la question dans le topic codage.
Merci pour l'info, je vais étudier ça...par contre la fonction include() est-elle propre au php ou je pourrai l'utiliser sans problème dans mon code html?
remenems a écrit :
par contre la fonction include() est-elle propre au php ou je pourrai l'utiliser sans problème dans mon code html?

Je pense que le tutoriel explique ça clairement. Smiley cligne
Oui, en effet, le tutoriel explique bien la marche à suivre pour garder statique le menu, l'en-tête et le pied de page, et ne modifier qu'une partie de la page.

Par contre, l'école pour laquelle je réalise le site nous interdit d'utiliser quelconque code dynamique (pour que les sites écrits pour constituer la base documentaire de l'école soit le + pérennes possible...).

Sur cette page, je voudrais, en cliquant par exemple sur "Présentation générale", afficher ma page "1a_pres.html" dans "contenu" sans recharger mes menus (menu et sous-menu) et mon pied de page "pied".

Merci d'avance pour vos propositions qui sont les bienvenues Smiley smile

Je remets mon code html légèrement modifié:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>La Plateforme Android</title>
<link rel="stylesheet" type="text/css" href="style.css">
<!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css"><![endif]-->
</head>
<body>
<!-- L'entête de la page, affiché tout en haut de l'écran : -->
<div id="entete">
<h1>La Plateforme Android</h1>
<!-- Le menu principal du site, affiché horizontalement: -->
<ul id="menu">
<li><a href="#">Accueil</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
<!-- La page en elle-même : -->
<div id="page">
<!-- Le sous-menu, affiché dans une colonne sur la gauche du site : -->
<div id="sous-menu">
<p class="grand_titre">La Plateforme Android</p>
<p class="sous_titre"><a href="1a_pres.html">Pr&eacute;sentation g&eacute;n&eacute;rale</a></p>
<p class="sous_titre"><a href="1b_archi.html">Architecture</a></p>
<p class="sous_titre"><a href="1c_interf.html">Interface, fonctionnalit&eacute;s</a></p>
<p class="grand_titre">Communaut&eacute;/Concurrence</p>
<p class="sous_titre"><a href="2a_etart.html">Etat de l'art</a></p>
<p class="sous_titre"><a href="2b_compar.html">Comparaisons</a></p>
<p class="grand_titre">Strat&eacute;gie de Google</p>
<p class="sous_titre"><a href="3a_pos.html">Positionnement</a></p>
<p class="sous_titre"><a href="3bfreq_.html">Bataille des fr&eacute;quences</a></p>
<p class="sous_titre"><a href="3c_media.html">Un m&eacute;dia pour la publicit&eacute;</a></p>
</div>
<!-- Le contenu utile de la page : -->
<div id="contenu">
<h2>Pr&eacute;sentation g&eacute;n&eacute;rale</h2>
<h3>L'id&eacute;e</h3>
<p>Android veut être le point de ralliement des développeurs, des opérateurs et des fabricants de terminaux
</p>
</div>
<!-- Le pied de page : -->
<div id="pied">
Paragraphe de copyrights...
</div>
</div>

</body>
</html>

ainsi que la feuille CSS liée:


body {
	background: #2D2D2D;
	margin: 10px 250px;
	font-family: sans-serif;
	font-size: small;
}
#page {
	width : 750px;
	background: white;
	border: 10px solid #424242;
	border-top: none;
}
#entete {
	width : 750px; 
	background: #97C024;
	border: 10px solid #424242;
	border-bottom: none;
}
h1 {
	background: #97C024;
	color: white;
	word-spacing: 1em;
	letter-spacing: 3px;
	height: 150px;
	line-height:150px;
	text-align: center;
	font-size: xx-large;
}
#menu {
	background: #3570F5;
	list-style: none;
	margin: 0; 
	padding: 0;
	height: 30px;
	line-height:30px;
}
#menu li {
	float: left;
	margin: 0 10px;
}
#menu a {
	text-decoration: none;
	color: white;
	cursor: pointer;
}
#sous-menu {
	height: 450px;
	background: #EEEEEE repeat-y;
	float: left;
	width: 198px;
	margin-top:0;
	margin-left: 0;
	padding:10px;
}
#sous-menu a {
	text-decoration: none;
	color: #666666;
}
.grand_titre {
	margin-top: 40px;
	margin-left: 4px;
	margin-bottom: 5px;
	color: blue;
	font-weight: bolder;
}
.sous_titre {
	padding: 0;
	margin-left: 4px;
}
#menu a:hover, #sous-menu a:hover,
#menu a:focus, #sous-menu a:focus,
#menu a:active, #sous-menu a:active
{
	color: black;
	
}
#contenu {
	margin-left: 220px;
	padding: 10px;
}
p {
	text-align: justify;
}
#pied {
	clear:both;
	border-top: 1px solid #454545;
}
@media print {
	#menu, #sous-menu {
		display: none;
	}
	body {
		background: none;
		margin: 0;
	}
	#page {
		background: none;
		border: none;
	}
	h1 {
		border: 1px solid black;
	}
	#entete {
		border: none;
	}
	#contenu {
		margin: 0;
		padding: 0;
	}
	#pied {
		border: 1px solid black;
	}
}


Vous me sauveriez la mise en me proposant une solution autre qu'en php pour ce faire Smiley smile
remenems a écrit :
Par contre, l'école pour laquelle je réalise le site nous interdit d'utiliser quelconque code dynamique (pour que les sites écrits pour constituer la base documentaire de l'école soit le + pérennes possible...).

Je ne vois pas quel est le problème de pérénité posé par un peu de PHP, vu à quel point ce langage est répandu sur les hébergements. Encore, je comprends qu'on n'ait pas envie d'avoir une base de données associée, car pour réaliser une sauvegarde du site il faut alors faire une sauvegarde des fichiers et de la base de données. Mais un peu de PHP ne fait pas de mal, et ne peut qu'aider à la maintenance du site.

Sans passer par du dynamique, la principale solution est l'utilisation de frames. On en parle ici:
http://www.la-grange.net/w3c/html4.01/present/frames.html

Mais on évite généralement les frames pour des questions d'ergonomie et de référencement.
D'abord un grand bravo pour la réactivité sur ce forum c'est assez hallucinant Smiley smile
Moi non plus, je suis d'accord avec toi sur l'utilisation du php. Le problème c'est qu'on ne nous laisse pas le choix...
merci pour le lien je vais étudier la solution Smiley smile
J'ai regardé la solution mais faut-il absolument mettre des frames ou l'attribut target est censé fonctionner avec des div?

Car j'ai essayé d'en appliquer un, mais ça ne fonctionne pas. Est-ce que je m'y prends mal ou est-ce tout simplement pas possible de combiner "target" vers les blocs "div"?

Voilà ce que j'ai modifié, si vous n'avez pas saisi mon problème, en cliquant sur le lien "présentation générale" vous verrez où je veux en venir...:

code html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>La Plateforme Android</title>
<link rel="stylesheet" type="text/css" href="style.css">
<!--[if IE]><link rel="stylesheet" type="text/css" href="ie.css"><![endif]-->
</head>
<body>
<!-- L'entête de la page, affiché tout en haut de l'écran : -->
<div id="entete">
<h1>La Plateforme Android</h1>
<!-- Le menu principal du site, affiché horizontalement: -->
<ul id="menu">
<li><a href="#">Accueil</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
<!-- La page en elle-même : -->
<div id="page">
<!-- Le sous-menu, affiché dans une colonne sur la gauche du site : -->
<div id="sous-menu">
<p class="grand_titre">La Plateforme Android</p>
<p class="sous_titre"><a href="1a_pres.html" target= #contenu>Pr&eacute;sentation g&eacute;n&eacute;rale</a></p>
<p class="sous_titre"><a href="1b_archi.html">Architecture</a></p>
<p class="sous_titre"><a href="1c_interf.html">Interface, fonctionnalit&eacute;s</a></p>
<p class="grand_titre">Communaut&eacute;/Concurrence</p>
<p class="sous_titre"><a href="2a_etart.html">Etat de l'art</a></p>
<p class="sous_titre"><a href="2b_compar.html">Comparaisons</a></p>
<p class="grand_titre">Strat&eacute;gie de Google</p>
<p class="sous_titre"><a href="3a_pos.html">Positionnement</a></p>
<p class="sous_titre"><a href="3bfreq_.html">Bataille des fr&eacute;quences</a></p>
<p class="sous_titre"><a href="3c_media.html">Un m&eacute;dia pour la publicit&eacute;</a></p>
</div>
<!-- Le contenu utile de la page : -->
<div id="contenu">
<h2>Pr&eacute;sentation g&eacute;n&eacute;rale</h2>
<h3>L'id&eacute;e</h3>
<p>Android veut être le point de ralliement des développeurs, des opérateurs et des fabricants de terminaux
</p>
</div>
<!-- Le pied de page : -->
<div id="pied">
Paragraphe de copyrights...
</div>
</div>

</body>
</html>

la feuille css liée:

body {
	background: #2D2D2D;
	margin: 10px 250px;
	font-family: sans-serif;
	font-size: small;
}
#page {
	width : 750px;
	background: white;
	border: 10px solid #424242;
	border-top: none;
}
#entete {
	width : 750px; 
	background: #97C024;
	border: 10px solid #424242;
	border-bottom: none;
}
h1 {
	background: #97C024;
	color: white;
	word-spacing: 1em;
	letter-spacing: 3px;
	height: 150px;
	line-height:150px;
	text-align: center;
	font-size: xx-large;
}
#menu {
	background: #3570F5;
	list-style: none;
	margin: 0; 
	padding: 0;
	height: 30px;
	line-height:30px;
}
#menu li {
	float: left;
	margin: 0 10px;
}
#menu a {
	text-decoration: none;
	color: white;
	cursor: pointer;
}
#sous-menu {
	height: 450px;
	background: #EEEEEE repeat-y;
	float: left;
	width: 198px;
	margin-top:0;
	margin-left: 0;
	padding:10px;
}
#sous-menu a {
	text-decoration: none;
	color: #666666;
}
.grand_titre {
	margin-top: 40px;
	margin-left: 4px;
	margin-bottom: 5px;
	color: blue;
	font-weight: bolder;
}
.sous_titre {
	padding: 0;
	margin-left: 4px;
}
#menu a:hover, #sous-menu a:hover,
#menu a:focus, #sous-menu a:focus,
#menu a:active, #sous-menu a:active
{
	color: black;
	
}
#contenu {
	margin-left: 220px;
	padding: 10px;
}
p {
	text-align: justify;
}
#pied {
	clear:both;
	border-top: 1px solid #454545;
	text-align: center;
}
@media print {
	#menu, #sous-menu {
		display: none;
	}
	body {
		background: none;
		margin: 0;
	}
	#page {
		background: none;
		border: none;
	}
	h1 {
		border: 1px solid black;
	}
	#entete {
		border: none;
	}
	#contenu {
		margin: 0;
		padding: 0;
	}
	#pied {
		border: 1px solid black;
	}
}


et le fichier html "1a_pres", censé s'afficher uniquement dans #contenu:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<body>
je voudrais que cette partie de code ne s'affiche que dans mon conteneur appelé #contenu
</body>
</html>
remenems a écrit :
J'ai regardé la solution mais faut-il absolument mettre des frames

Oui. Frames ou iframes.

remenems a écrit :
ou l'attribut target est censé fonctionner avec des div?

Non. Une div n'est pas un cadre.
arf...en tout cas merci de m'éclairer sur les possibilités qui s'offrent à moi Smiley smile

A ton avis, est-ce que ça vaut le coup de refondre ma page et remplacer les div par des frames (ç an'a pas l'air top les frames...)? Ou alors je laisse tomber et pour chaque lien, je charge une nouvelle page avec l'intégralité du code de la page d'accueil + les modifs.
Le problème c'est que si je dois faire une modif sur mon index par exemple, je devrais faire de même pour les 6 autres pages du menu, n'est-ce pas?
remenems a écrit :
A ton avis, est-ce que ça vaut le coup de refondre ma page et remplacer les div par des frames (ç an'a pas l'air top les frames...)?

Il y a en fait deux questions:
- Comment faire exactement côté technique? (Réponse: voir le chapitre sur les cadres dans la spécification HTML 4.01 -- j'ai déjà donné le lien -- et peut-être lire en plus un tutoriel sur l'utilisation des frames.)
- Est-ce que c'est une bonne idée? (Réponse: plutôt non, à cause des problèmes d'ergonomie et de référencement que cela pose.)

remenems a écrit :
Ou alors je laisse tomber et pour chaque lien, je charge une nouvelle page avec l'intégralité du code de la page d'accueil + les modifs.

Oui, je ferais ça. Par contre, je le ferais en PHP en local histoire de me simplifier la vie niveau maintenance du code, avec URL Rewriting pour obtenir des noms de page en «ma-page.html» et pas «index.php?page=ma-page», et je ferais une «aspiration» du site ainsi produit afin d'avoir les pages HTML statiques qui vont bien.
C'est possible, ça? Smiley smile Très intéressante ta solution! car c'est vrai que la maintenance du code est plutot lourde sinon...
2 petites quesitons:
- URL Rewriting c'est une ligne que tu rajoutes dans ton code html, uniquement pour renommer tes pages php?
- l'aspiration du site, en fait ça me donnera bien comme résultat les codes de chaque page html? Tu as une préférence pour un aspirateur de site lequel je pourrais faire ça? je trouverais bien sinon...

Par contre je vais être une semaine sans connexion donc désolé si je ne réponds pas tout de suite...et encore merci Smiley smile
remenems a écrit :
- URL Rewriting c'est une ligne que tu rajoutes dans ton code html, uniquement pour renommer tes pages php?

Non, c'est une option de configuration du serveur. Si tu travailles avec un serveur local tel que EasyPHP tu peux sans doute faire ça via un fichier .htaccess.

remenems a écrit :
- l'aspiration du site, en fait ça me donnera bien comme résultat les codes de chaque page html?

Oui, ça donne les contenus visibles par le visiteur (toi en accédant en local à ton site sur l'adresse 127.0.0.1 par exemple).

remenems a écrit :
Tu as une préférence pour un aspirateur de site lequel je pourrais faire ça?

Je les connais mal. J'ai déjà fait ça avec wget sous linux en ligne de commande avec plein de paramètres. Mais c'est un peu ardu si on n'a pas l'habitude, on doit trouver plus simple.
OK ok...j'avais commencer à regarder easyphp...
bon par contre vu que je suis un peu pris par le temps je vais peut etre me cantonner à copier-coller mon code en essayant de ne pas avoir de modif à faire. Par contre j'essairai ta solution + tard qui parait très fonctionnelle!

Merci pour tout Smiley smile