8797 sujets

Développement web côté serveur, CMS

Bonjour,

les différents fichiers du site doivent contenir un fichier "head.inc.php" (qui fait appel à "res.inc.php") et "bottom.inc.php" qui se trouvent dans le répertoire "Common\includes".

Le fichier "head.inc.php" fait appel à un fichier "styles.css" situé dans le répertoire "Fichiers-navind".

Le problème est que ces fichiers doivent être inclus dans chaque page du site, mais le chemin d'accès aux fichiers à inclure diffère selon l'emplacement des fichiers (qui sont dans des répertoires différents au niveau de l'arborescence, par ex: "index.php" et "Dossiers/dossiers.php").

J'utilise la syntaxe suivante pour avoir un chemin absolu vers les fichiers à inclure


<?php
include ($_SERVER['DOCUMENT_ROOT'].'/Common/includes/head.inc.php');
?>


seulement, cette méthode ne semble pas fonctionner pour aller chercher le fichier css.
Si j'emploie


<link rel="StyleSheet" type="text/css" href=<?php echo '"'.$_SERVER['DOCUMENT_ROOT'].'/Fichiers-navind/styles.css"'; ?>>


cela ne prend pas en compte les styles alors que si j'emploie par exemple pour la page d'accueil


<link rel="StyleSheet" type="text/css" href="Fichiers-navind/styles.css">


cela fonctionne.
Merci pour l'aide que vous pourrez m'apporter
Slt,

tu peux te positionner à la racine de ton site comme ceci :

/


après, il ne te reste plus qu'à écrire le chemin adéquat. Exemple :

/Fichiers-navind/styles.css


++
merci, cela semble fonctionner (en local au moins avec EasyPHP et firefox).

par contre, le problème de cette solution

/Fichiers-navind/styles.css


est que dreamweaver ne prend pas en compte les styles et du coup j'ai un affichage tout moche, et ce n'est pas évident pour créer les pages...
apparement, cette solution fonctionne quand même une fois les fichiers en ligne, merci pour ton aide.
Modifié par Nefret (03 Sep 2005 - 11:45)
pour que ca marche avec Dreamweaver, rajoute le point devant. Je pense que ca à le même effet.
./Fichiers-navind/styles.css

a+
cela ne change rien si je rajoute un point devant.

en fait, le seul élément où je vois la disposition, l'apparence normale, c'est le fichier "head.inc.php" qui fait référence à


<link rel="StyleSheet" type="text/css" href="/Fichiers-navind/styles.css">


et toutes les autres pages ne prennent pas en compte les css alors que le fichier "head.inc.php" est inclu dans celles-ci.

si je mets un point devant


<link rel="StyleSheet" type="text/css" href="./Fichiers-navind/styles.css">


aucune page ne s'affiche correctement (y compris cette fois ci "head.inc.php")
Pour résoudre ton probleme tu peux appliquer cette solution:

Commencons par la page "index.php" (en admettant que celle-ci soit située à la racine du site) dans celle-ci creer la variable:

$racine = str_repeat('../', substr_count(dirname("/index.php"),"/"));


Puis par exemple pour une page "page.php" se trouvant dans un repertoire /toto/ :

$racine = str_repeat('../', substr_count(dirname("/toto/page.php"),"/"));


et ainsi de suite pour les autres pages.

Ensuite vient le tour du fichier head.inc.php, dans celui-ci, la ligne appelant le fichier CSS devra etre comme suit:

<link rel="stylesheet" media="screen" type="text/css" title="blabla" href="<?php echo $racine;?>Fichiers-navind/styles.css" />


En fait la variable $racine sera remplacer par autant de "../" que necessaire pour retourner à la racine.

Cad que par exemple pour la page "/toto/tata/tutu/page.php" $racine affichera "../../../" et par consequent ta ligne d'appel du fichier CSS sera:

<link rel="stylesheet" media="screen" type="text/css" title="blabla" href="../../../Fichiers-navind/styles.css" />


Le point important ici est de bien comprendre que ce n'est pas à partir du fichier head.inc.php que l'on retrouve la racine mais à partir de celui qui l'inclue.

Ainsi la variable est créée dans le fichier "incluant" et sera utilisable par le code du fichier inclue (head.inc.php).

En gros faire <?php include 'head.inc.php'?> dans "page.php" revient à ecrire le code de "head.inc.php" dans "page.php"

Voilou Smiley lol , j'éspère que mon aide pourra t'aider et que j'ai été assez clair
Modifié par Lavazzo (04 Sep 2005 - 03:59)
merci pour ta solution, mais cela ne change en rien l'affichage sous dreamweaver malheureusement.
la solution est bonne à partir du moment ou ton site dream est bien configuré...

regarde de ce coté la..

ou est la racine de ton site dans dream ?
dans dreamweaver, j'ai un site (JAGhm) qui en contient un autre (NCIS-fr) et c'est pour ce site.
donc depuis la racine, ça fait
/NCIS-fr/index.php

donc j'ai fait par exemple pour la page index.php


<?php
$racine = str_repeat('../', substr_count(dirname("/NCIS-fr/index.php"),"/"));
include ($_SERVER['DOCUMENT_ROOT'].'/NCIS-fr/Common/includes/head-ind.inc.php');
?>


et dans le fichier head-ind.inc.php


<link rel="StyleSheet" type="text/css" href="<?php echo $racine;?>Fichiers-navind/styles.css">
Je ne connais pas apache mais sous IIS la plupart tu temps il n'est pas permis de remonter l'arbo avec ../

Ce n'est pas çà par hasard ?
Si si le "../" est tout a fait autorisé Smiley cligne

Sinon avec la variable $racine tu n'est plus obliger de faire:
<?php
$racine = str_repeat('../', substr_count(dirname("/NCIS-fr/index.php"),"/"));
include ($_SERVER['DOCUMENT_ROOT'].'/NCIS-fr/Common/includes/head-ind.inc.php');
?>


Tu peux remplacer par

<?php
$racine = str_repeat('../', substr_count(dirname("/NCIS-fr/index.php"),"/"));
include $racine.'NCIS-fr/Common/includes/head-ind.inc.php';
?>

C'est plus lisible moi je trouve Smiley lol
Par contre je ne sais pas si ca va resoudre ton probleme de DreamWeaver.
En plus comme je ne connais pas du tout comment fonctionne ce soft je ne peut pas t'aider a le configurer.
Mais y'a quand meme un truc qui m'intrigue, quand tu edite une page avec dreamweaver, le code PHP contenu dans cette page est-il analyser et traduit par le logiciel (en gros est ce que quand tu ouvre une page avec dreamweaver ca passe par le serveur web(apache) ou est-ce que ca n'edite pas que le (x)HTML ???
Parce que sinon c'est normal qu'il ne trouve pas le CSS puisque pour le trouver il faut traduire du code PHP Smiley rolleyes
je pense que dreamweaver interprète quand même un peu le php puisque si je remplace


<?php
include ($_SERVER['DOCUMENT_ROOT'].'/NCIS-fr/Common/includes/head-ind.inc.php');
?>


par


<?php
include ('Common/includes/head-ind.inc.php');
?>


dans index.php à ce moment là, ma page index s'affiche correctement (avec le menu du haut et les styles).

dans head-ind.inc.php où j'ai ça


<?php include ($_SERVER['DOCUMENT_ROOT'].'/NCIS-fr/Common/includes/rens.inc.php')?>
<title><?php echo $titre; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
<link rel="StyleSheet" type="text/css" href="/NCIS-fr/Fichiers-navind/styles.css">


je vois le menu normalement avec les css et tout, c'est le seul fichier qui s'affiche correctement.