Page 1 sur 1

Titre dynamique

Posté : 16 nov. 2006, 01:10
par Zurg
Bonsoir à tous !

Je cherche à faire des titres de pages dynamiques. En fait, j'utilise les pseudo-frames sur une page qui s'appelle sommaire.php .
Elle dispose entre autres, d'un menu horizontal, d'une page centre.php, et d'un footer.

Voici à quoi elle ressemble :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>..:: Sommaire ::..</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style_2.css" rel="stylesheet" type="text/css"/>
<script language="JavaScript" type="text/JavaScript">
<!--



function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
</head>

<body>
<div id="conteneur">			
		
  <h1 id="header"><a href="index.php" "><span>Blabla
    </span></a></h1>
	
		<?php 
		if (!isset($_GET['pg']))
			{
			$_GET['pg'] = "Sommaire";
			}
		$page = $_GET['pg'];
		$pages_possibles = array(
		'Sommaire' => 'som1.php',
		'Photos' => 'album.php',
		'Bas_Reliefs' => 'bas_rel.php',
		);
		for ($i=0; $i<count($pages_possibles); $i++)
			{
			if ($page == $pages_possibles)
				{
				$page_aff = $page;
				break;
				}
			else
				{
				$i++;
				$page_aff = "Sommaire";
				}
			}
		if ($page != "Sommaire")
			{
		?>
		<ul id="menu">
				<li><a href="sommaire.php?pg=Photos">Photos</a></li>
				<li><a href="sommaire.php?pg=Lieu">Le lieu</a></li>
				<li><a href="sommaire.php?pg=Cambodge">Cambodge</a></li>
				<li><a href="esommaire.php?pg=Bas_Relief">Bas relief</a></li>
				<li><a href="contact.php">Contact</a></li>
			</ul><br>
		<?php }	?>
		<div id="contenu"> 
			
    <h2><?php 
	echo $page_aff."...";?></h2>
			
      <?php include("centre.php");?> 
		</div>
		<p id="footer"><?php include ("footer.php");?></p>
	</div>
</body>
</html>
Il y a 2 choses :

1/ En fonction d'une variable passée en url, le titre doit être modifié
2/ Si la page appelée correspond à la page du sommaire en lui même, il ne faut pas afficher le menu horizontal.

Or, pour l'instant, si le sommaire est appelé normalement, pas de problème, le menu disparait, et le titre est bon, mais si on met un nom bidon dans l'url, genre ?pg=blabla , là, ça ne marche pas. La page centre.php redirige vers les sommaire, et le fichier est bien inclu, mais le menu s'affiche quand même.

=> Où est l'erreur ?

De même que lorsqu'une page autorisée est appelée, le titre reste "Sommaire"

=> Pourquoi ?

Voici la page centre.php pour mieux comprendre
<?php 
// config
$pages_possibles = array(
    'Sommaire' => 'som1.php',
	'Photos' => 'album.php',
    'Bas_Reliefs' => 'bas_rel.php',
);
$page_par_defaut = 'Sommaire';

// récupération de la page à inclure en fonction de ?pg=...
$code_page = isset($_GET['pg']) ? $_GET['pg'] : $page_par_defaut;
$page = isset($pages_possibles[$code_page]) ? $pages_possibles[$code_page] : $pages_possibles[$page_par_defaut];

// inclusion effective, avec les deux lignes précédentes on s'est assuré
// que le fichier faisait partie de la liste des fichiers qu'on a décidé qu'on
// pouvait inclure (le cas échéant, on "tombe" sur la page par défaut)
include $page; 
?>
Voilà, en gros j'espère avoir assez bien exprimé mon problème...

Merci !

Posté : 16 nov. 2006, 18:42
par Devether
Bonjour,
mais le menu s'affiche quand même.
c'est normal!
tu mets : $page = $_GET['pg'];
donc si tu mets un truc bidon, $page ne sera jamais égale à "Sommaire"
puisque ton test de if($page == $pages_possibles) n'affecte pas $page mais $page_aff.

comme $page n'est jamais changé, ton test if ($page != "Sommaire") sera toujours vrai donc ton menu s'affiche.
De même que lorsqu'une page autorisée est appelée, le titre reste "Sommaire"
ton test if($page == $pages_possibles) est faux.
tu incrémentes $i et tu ne t'en sert pas
==> if($page == $pages_possibles[$i])

bye