8791 sujets

Développement web côté serveur, CMS

Donc voila mon problème.

J'ai créé mon site en blocs par soucis d'efficacité.
Jusque la ok.
Ensuite pour avoir des titres différents selon la page j'ai utilisé les fonctions suivantes du PHP:


<?php

$site_titre = "titre de mon site | ";

$page_titre["index.php"] = array("Accueil");
$page_titre["a.php"] = array("Page A");
$page_titre["b.php"] = array("Page B");
$page_titre["c.php"] = array("Page C");


$adresse_fichier = $HTTP_SERVER_VARS["PHP_SELF"];
$adresse_fichier = basename($adresse_fichier);
$titre_page = $page_titre[$adresse_fichier][0];


?>


Oki. Donc jusque la tout marche Smiley lol

Ensuite j'ai décidé de mettre un logo différent celons les pages Smiley murf

Bon j'ai donc créer un autre fichier php (logo.php) lui aussi appelé a l'aide d'une include Smiley sweatdrop

Sauf que vu que ces variable de la fonction sont deja utilisées par le titre... Pas moyen de réutilisé la même astuce Smiley confus

Voila ma deuxième fonction


<?php



$logo["index.php"] = array("header.jpg");
$logo["a.php"] = array("logoA.jpg");
$logo["b.php"] = array("logoB.jpg");



$fichier = $HTTP_SERVER_VARS["PHP_SELF"];
$fichier = basename($fichier);
$titre_page = $logo[$fichier][0];



?>


Et bien si une personne a une idée lumineuse qui puisse me sauver...
Je suis preneur !

Merci d'avance !
Modifié par epheo (30 Aug 2008 - 16:44)
Salut,

quelques remarques générales :

* pour ce que tu veux faire il est inutile d'utiliser des tableaux multidimensionnels comme dans :
$page_titre["index.php"] = array("Accueil");
...
$titre_page = $page_titre[$adresse_fichier][0];
A remplacer par :
$page_titre["index.php"] = "Accueil";
...
$titre_page = $page_titre[$adresse_fichier];
Cela simplifie d'ailleurs l'écriture et permet de faire :
$page_titre = array(
	"base.php"	=> "Accueil",
	"a.php" 	=> "Page A",
	"b.php"		=> "Page B",
	"c.php"		=> "Page C");

* $HTTP_SERVER_VARS["PHP_SELF"] est obsolète depuis déjà un bon moment et il est conseillé d'utiliser $_SERVER['PHP_SELF']

* d'ailleurs pour ton besoin il est encore plus simple de faire
$page_en_cours = basename(__FILE__);

* il est inutile de déclarer plusieurs fois $fichier.

* sinon je ne comprends pas bien ta question ni pourquoi tu utilises 2 fois la variable $titre_page. Smiley rolleyes


J'aurais donc plutôt fait comme ça :
<?php
$site_titre = "titre de mon site | ";
$page_en_cours = basename(__FILE__);

$titres = array(
	"index.php"	=> "Accueil",
	"a.php" 	=> "Page A",
	"b.php"		=> "Page B",
	"c.php"		=> "Page C");

$titre_page = $titres[$page_en_cours];

$logos = array(
	"index.php"	=> "header.jpg",
	"a.php"		=> "logoA.jpg",
	"b.php"		=> "logoB.jpg");

$logo_page = $logos[$page_en_cours];
?>

A+
Modifié par Heyoan (25 Aug 2008 - 04:31)
Ho que c'est beaux !
Je ne m'attendais pas a avoir une réponse si rapide a cette heure si ^^
J'étais encore dessus là.
J'avais trouvé un technique super compliqué qui marché a moitié et là.
Au plus grand des hasard je viens voir ici et...

Merci !
Voila qui me simplifie la vie. Un code simple et qui marche impec.

Bon. Je vais donc enfin pouvoir aller dormir =D


Un grand merci Smiley lol

Edit: Bon j'arrive toujours pas a faire marcher tout ça mais bon Smiley murf
J'vais y réfléchir... Que j'ai l'impression d'être a la rue complet en PHP
Modifié par epheo (25 Aug 2008 - 07:08)
Comme il n'y a qu'un logo par page (normalement) et qu'un logo c'est pas sensé être trop volumineux.
Si tu n'as pas des centaines de pages, tu peux très bien te passer de tableau et nommer le logo de la même manière que la page (par exemple : index.jpg, a.jpg, b.jpg, etc).
Ca aura comme conséquence qu'il suffit d'ajouter un logo pour qu'il soit directement affiché sur la page.

Il faudra par contre penser à gérer le cas d'un logo par défaut si l'image n'existe pas Smiley cligne
Pas bete ton idée.
Je vai regarder ca...
Il y a des jours ou je regrette vraiment de ne pas mieux m'y connaitre en PHP.
Mais bon, on ne peut pas tout faire Smiley decu
Si seulement j'avais le temps Smiley sweatdrop

Sinon Je souhaite quand même garder le tableau car bon. Je ne compte pas rajouter de pages par la suite et il va y avoir aussi tout les titres a gerer.

Sinon je ne m'en sort toujours pas avec ce tableau Smiley fache

PHP m'affiche un joli
Notice: Undefined index: topbjr.inc.php in C:\Program Files\EasyPHP 2.0b1\www\bjr\topbjr.inc.php on line 13


topbjr.inc.php est l'include pour le haut du document

La ligne 13 du code et le:
$titre_page = $titres[$page_en_cours];

ça m'énervee. Je ne vois pas dutout d'où ça pourrait venir
epheo a écrit :

ça m'énervee. Je ne vois pas dutout d'où ça pourrait venir
C'est parce que tu as mis la ligne $page_en_cours = basename(__FILE__); dans une page incluse alors qu'elle doit obligatoirement être dans celle qui contient include('mapageincluse.inc.php'); Smiley cligne
OMG! Que c'est bon quand ça marche !
Je suis un triple boulay mais c'est décidé dés que j'ai un peut de temps je me met au PHP (et correctement)

Merci Heyoan!
Sujet résolu! Smiley biggrin