Page 1 sur 1

Pb de chemin dans les includes

Posté : 22 mars 2007, 20:02
par debutant
Bonjour j'aurais besoin de vos lumieres
Je fais un site en php dans lequel j'ai mis un menu ! Jai inclus ce menu dans mes pages avec un include classique
Mais j'ai une arborescence telle qu'elle
La racine ou jai mon index
Et un sous repertoire : page ou jai toutes mes autres pages dont le menu

Seulement vu que le include inclus tout le code quil y a ds ma page menu, jai quand je passe à mon fichier index un pb dans les liens dans mon menu puisqu'au lieu detre comme ceci : pages/monfichier.php ils deviennent ainsi monfichier.php donc forcement ils ne marchent plus ! Comment puis je faire pour corriger ce pb qui est tres chiant !

Posté : 22 mars 2007, 20:43
par Ultim4T0m
Bonjour,

Tu peux par exemple mettre ton index dans le même dossier que tes pages.

Ou encore faire un deuxième fichier, le même, mais avec les bons liens, à la racine.

Ou même faire une condition dans ton fichier, qui rajoute ou non le chemin du dossier pour les liens.

Re: Pb de chemin dans les includes

Posté : 22 mars 2007, 21:18
par dunbar
Bonjour j'aurais besoin de vos lumieres
Je fais un site en php dans lequel j'ai mis un menu ! Jai inclus ce menu dans mes pages avec un include classique
Mais j'ai une arborescence telle qu'elle
La racine ou jai mon index
Et un sous repertoire : page ou jai toutes mes autres pages dont le menu

Seulement vu que le include inclus tout le code quil y a ds ma page menu, jai quand je passe à mon fichier index un pb dans les liens dans mon menu puisqu'au lieu detre comme ceci : pages/monfichier.php ils deviennent ainsi monfichier.php donc forcement ils ne marchent plus ! Comment puis je faire pour corriger ce pb qui est tres chiant !
Et pourquoi pas mettre simplement le chemin complet
http://monsite/monfichier.php :?:

Posté : 23 mars 2007, 00:03
par debutant
jai bien évidemment penser à faire un double de fichiers du menu , cest ce que jai fait pour le moment mais apres pour le modifier & compléter cest tt un bordel , idem en lui mettant direct ladresse de lhebergeur devant vu qu'apres en local jpeux plus bosser !

Par contre j'arrive pas à voir comment je peux faire la condition if pour le chemin de dossier que tu me proposes ! :?

Posté : 23 mars 2007, 16:49
par Ryle
Quitte à mettre un chemin absolu, fais le partir de la racine du site sans spécifier le nom de domaine :

Code : Tout sélectionner

/dossier/monfichier.php
Cela devrait fonctionner en local également.

Pour la condition, tu peux tester le nom et le chemin du fichier qui inclu le menu avec la variable $_SERVER['PHP_SELF']. Tu peux par exemple utiliser dirname() pour ne récuperer que le nom du dossier et ainsi vérifier si tu es à la racine ou pas :)

Posté : 24 mars 2007, 00:52
par Invité
merci je vais essayer avec dirname sinon pour ce que tu mas dit avt si je le fais à partir de la racine, apres ds mes fichiers presents ds mon ss repertoire et dans lequel le menu va sinclure les liens du menu seront mauvais vu quils auront un lien ds un autre ss repertoire qui nexiste pas :?

Posté : 25 mars 2007, 14:59
par débutant
Jai essayé de faire avec dirname mais ca ne marche pas hélas

Jai donc fait :
<?PHP
//si je suis dans le sous repertoire "pages"

if ( dirname ('pages/')){
	
echo '<ul><li><a href="candidats.php">candidats</a></li>
<li><a  href="resumes_index.php">resumés</a></li></ul>';
}
			
// Ou si je suis "à la racine" j'affiche 
elseif(dirname ('.')){
echo '<ul><li><a href="pages/candidats.php">candidats</a></li>
<li><a  href="pages/resumes_index.php">resumés</a></li></ul>';
}
?>
Ca ne change rien dans mon menu le changement ne se fait pas ! merci pour votre aide

Posté : 25 mars 2007, 15:42
par Ryle
Euh.... as-tu bien compris à quoi servait la fonction dirname() ?

L'idée, c'est depuis ton menu, récupérer le nom du fichier qui l'inclue (et accessoirement son chemin) pour savoir s'il se trouve dans le dossier pages ou pas... Je vois pas d'appel à $_SERVER['PHP_SELF'] dans ce que tu as fais.. quant à appeller la fonction dirname() directement sur un dossier, il y a de grande chance pour qu'elle te retourne toujours le nom du dossier ;)

Ajoute ceci dans ton menu, et regardel a valeur qu'il prend selon qu'il est appellé par ta page principale ou l'une de celles du dossier page :
echo "Valeur : " . dirname($_SERVER['PHP_SELF']);
Essaye à partir de la d'établir une règle pour distinguer ces deux cas :)


Quant au chemin absolu, dans une url le "/" correspond à la racine du site, c'est à dire le domaine :
http://www.monsite.fr/dossier/page.php
Ainsi, si ton lien est /dossier/page.php, que celui-ci soit lu affichée par une page qui se trouve à la racine, ou dans n'importe quel sous-dossier, il ouvrira toujours la page page.php qui se trouve dans le répertorie "dossier" placé à la racine du site :)

Nota : quand on travail sur le système de fichier, le "/" correspond à la racine du disque dur du serveur.

Posté : 25 mars 2007, 17:37
par debutant
ok merci je vais essayer

Posté : 25 mars 2007, 19:11
par Invité
Merci cest bon j'ai reussi apres avoir bataillé une bonne heure

en faisant cela : (PROJETS étant ma racine)
if (dirname($_SERVER['PHP_SELF']) == ('/PROJETS')){

echo '<ul><li><a href="pages/candidats.php">candidats</a></li> 
<li><a  href="pages/resumes_index.php">resumés</a></li></ul>'; 
} 

else{

echo '<ul><li><a href="candidats.php">candidats</a></li> 
<li><a  href="resumes_index.php">resumés</a></li></ul>'; 
}