8791 sujets

Développement web côté serveur, CMS

Bien le bonsoir tout le monde (ou le bonjour vu l'heure qu'il est Smiley lol )

Je cherche à afficher une image dans la partie en-tete (header) en fonction de la page affichée en contenu (content), pour cela j'ai un fichier principal index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<title>CV en ligne</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" />
		<meta name="Description" content="" />
		<link title="defaut" rel="stylesheet" type="text/css" media="screen, projection" href="style/defaut.css" />
		<script type="text/javascript" src="scripts/cachemontre.js"></script>
	</head>

	<body>
		<div id="container">
			<div id="header"><?php include("header.php"); ?></div>
			<div id="logo">Logo</div>
			<div id="menu"><?php include("menu.php"); ?></div>
			<div id="global">
				<div id="navbar"><?php include("barre.php"); ?></div>
				<div id="content">
					<?php
						if ($page ==""){include("cv01.php");}
						if ($_GET['page'] == "cv01"){include("cv01.php");}
						if ($_GET['page'] == "cv02"){include("cv02.php");}
						if ($_GET['page'] == "cv03"){include("cv03.php");}
						if ($_GET['page'] == "cv04"){include("cv04.php");}
						if ($_GET['page'] == "cv05"){include("cv05.php");}
						if ($_GET['page'] == "cv06"){include("cv06.php");}
						if ($_GET['page'] == "telecharger"){include("telecharger.php");}
						if ($_GET['page'] == "apropos"){include("apropos.php");}
						if ($_GET['page'] == "contact"){include("contact.php");}
						if ($_GET['page'] == "cv"){include("cv.php");}
					?>
				</div>
			</div>
			<div id="footer"><?php include("footer.php"); ?></div>
		</div>
	</body>
</html>


j'ai donc créé une page image.php dans laquelle je cherche à déclarer quelle image afficher en fonction de la page affichée dans le contenu (ça ressemble a ce qu'il y a dans l'index.php)
<?php
	header("Content-type: image/png");
	if ($page =="") $image = "images/accueil.png";
	if ($_GET['page'] == "cv01") $image = "images/cv01.png";
	if ($_GET['page'] == "cv02") $image = "images/cv02.png";
	if ($_GET['page'] == "cv03") $image = "images/cv03.png";
	if ($_GET['page'] == "cv04") $image = "images/cv04.png";
	if ($_GET['page'] == "cv05") $image = "images/cv05.png";
	if ($_GET['page'] == "cv06") $image = "images/cv06.png";
	if ($_GET['page'] == "telecharger") $image = "images/telecharger.png";
	if ($_GET['page'] == "apropos") $image = "images/apropos.png";
	if ($_GET['page'] == "contact") $image = "images/contact.png";
	readfile($image);
?>


et pour finir j'ai un fichier header.php dans lequel je fais appel au fichier image pour afficher l'image et d'autres choses non présentes encore

<img src="image.php" alt=""/>


Avec tout ça mon/mes image(s) ne s'affiche(nt) pas et je ne vois pas ou mon code foire. Donc si un bon samaritain avait le début d'un commencement d'explication ou d'un lien qui serait susceptible de m'aider ... je prends Smiley biggrin .

Sur ce bonne nuit à vous tous, je vais dodoer car demain y'a boulot Smiley lol
Modifié par Xstof (26 Dec 2009 - 23:15)
Salut,

je ne vois pas trop pourquoi ça ne fonctionne pas mais en tout cas quel est l'intérêt du header(...png) et du readfile alors qu'il ne s'agit que d'un chemin vers une image ? D'autant plus que ce serait bien plus simple à debbuguer en voyant si le chemin est bon depuis la page générée.

D'autre part il y a moyen de factoriser ton code. On pourrait passer par des arrays $images et $includes mais comme tes images et tes fichiers inclus ont le même nom que la page en cours c'est encore plus simple :

au début de index.php :
$page = !empty($_GET['page']) ? $_GET['page'] : '';
// valeurs par défaut
$image = 'accueil';
$include = 'cv01';
// Vérification que la page à inclure existe
if (file_exists($page.'.php')) {
	$image = $page;
	$include = $page;
}

dans index.php (après <div id="content">) :
include($include.'.php');

header.php :
<img src="images/<?php echo $image; ?>.png" alt="" />

Modifié par Heyoan (26 Dec 2009 - 12:27)
Heyoan a écrit :

je ne vois pas trop pourquoi ça ne fonctionne pas mais en tout cas quel est l'intérêt du header(...png) et du readfile alors qu'il ne s'agit que d'un chemin vers une image ? D'autant plus que ce serait bien plus simple à debbuguer en voyant si le chemin est bon depuis la page générée.


Bonsoir et tout d'abord merci de prendre un peu de ton temps pour me filer un coup de main Smiley smile

Je suis qu'un humble débutant qui se forme au fur et à mesure de ses besoins au XHTML, CSS, PHP, et n'ai pas obligatoirement le vocabulaire et la connaissance de tout ce qui existe en programmation Smiley cligne : je regarde un peu partout sur les sites "vulgarisés" avec les exemples, cherche à comprendre comment cela fonctionne et modifie selon mes besoins.

Si j'ai tout bien compris : le header permet de faire comprendre au navigateur qu'on va lui envoyer une image et non une page web, tandis que le readfile permet de "joindre l'image" au fichier image.php qui sera "appelé" avec le
<img src="image.php" alt=""/>

[je recherche a savoir si factoriser le code revient à la même chose qu'en math ... oui ... je suis débutant Smiley biggrin ]

oki je suis preneur de tout ce que l'on peut m'apprendre, de plus si cela simplifie le code et allège la page Smiley prie

La page générée quand à elle ne me donne que <img src="image.php" alt=""> et limage désirée ne semble pas jointe à ma page image.php Smiley ohwell


Je vais décortiquer ton code, même si je vois d'un point de vue général comment il fonctionne ....
Re bonsoir,

je viens de l'intégrer à mes pages et effectivement ca fonctionne nickel Smiley clapclap

je ne connaissais pas l'existence de cette "file_exists" super pratique faut bien le dire...ça m'évitera de devoir rajouter les lignes à chaque ajout de page et continuera malgré tout à jouer son petit rôle sécuritaire Smiley cligne .

par contre je bloque sur un point la toute première ligne pour laquelle je ne comprends pas trop le fonctionnement Smiley sweatdrop : elle permet de mettre à 0 la "reconnaissance" du nom de la page qui sera en cours d'affichage ? c'est le
$_GET['page']) ? $_GET['page'] : ''; 
qui me bloque un peu ... mais je vais continuer à chercher (sauf si tu as une adresse qui m'explique cela Smiley lol

En tout cas merci beaucoup pour le coup de main, ça va bien me dépatouiller Smiley biggrin
Xstof a écrit :
par contre je bloque sur un point la toute première ligne pour laquelle je ne comprends pas trop le fonctionnement...
Il s'agit de l'opérateur ternaire. Au passage ne pas hésiter à utiliser php.net : voir par exemple file_exists.

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne


PS : la factorisation informatique.
Modifié par Heyoan (26 Dec 2009 - 20:57)
re bonsoir Smiley smile

et encore merci pour le coup de main, je vais de suite modifier le titre du sujet et mettre le http://fr.php.net/manual/fr/ dans mes marquetapages Smiley lol car je ne le connaissais pas

Merci encore et bonne soirée à tout le monde Smiley smile