include et arborescence

Eléphant du PHP | 206 Messages

27 juin 2007, 20:06

Hello tout le monde,

Me revoici avec une question d'organisation encore :p

Je recherche une nouvelle fois la bonne méthode et cette fois ci dans le cadre de la fonction include.

J'ai actuellement divers dossiers (includes - membres - admins )

Mais parfois je galère lors de l'include car je dois jongler entre ../includes/monfichier ou /includes/monfichier

Mais la je suis confronté à un problème.

J'ai une page haut.php qui contient en gros l'entete (les balises head) et donc qui fait le lien avec le design.
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="includes/design.css" />
Et ma page haut.php est incluse dans la majorité des pages de tout les dossiers.

Quand la page est à la racine ça ne pose pas de problème, mais quand ma page se situe disons dans le dossier membre, alros le lien vers le design n'est pas bon car devrait etre : href="../includes/design.css" />

Je ne cherche pas comment résoudre ce probleme car je suis sur que ce n'est que le début. Je cherche plutot une manière de mieux gérer mes includes en fonctions dossiers.

Donc ce qui ont l'expérience de cela ou des liens à me donner. Je vous serais très reconnaissant.

Merci d'avance et bonne soirée

ViPHP
AB
ViPHP | 5818 Messages

27 juin 2007, 23:32

A priori je te dirais pourquoi ne pas mettre l'adresse complète de ta page includes/design.css plutôt que adresse relative?

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

28 juin 2007, 01:08

je dois jongler entre ../includes/monfichier ou /includes/monfichier
D'ailleurs, j'en profite pour préciser que /includes/monfichier n'est pas exactement une URL relative (je ne connais pas le terme exact, elle représente la racine du site), elle représentera toujours le même fichier du moment que le nom de domaine du site ne change pas. Si une URL commence par / c'est comme si elle commençait par http://<domaine_du_site>/

Eléphant du PHP | 199 Messages

28 juin 2007, 01:43

Effectivement il faut que tu indiques la racine de ton site dans l'URL : /includes/design.css

Ça pointera vers le même fichier peu importe la page où tu places le lien :)
Klomac - Blog Lambda

Eléphant du PHP | 206 Messages

28 juin 2007, 15:43

OK donc en local j'ai mis

href="http://127.0.0.1/Nevrus/includes/design.css" />

Ce qui marche effectivement bien.
Mais il n'y a pas plus simple ou du moins plus universelle ?
Car quand je vais uploader tout ça je serais obliger de modifier en fonction du nom de domaine ou autre.

ViPHP
fab
ViPHP | 2657 Messages

28 juin 2007, 16:00

Faut faire en sorte que tes fichiers appelés change pas de répertoire :) ( tu peux faire des fichiers cons genre des simple alias à la racine )
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 199 Messages

28 juin 2007, 16:08

OK donc en local j'ai mis

href="http://127.0.0.1/Nevrus/includes/design.css" />

Ce qui marche effectivement bien.
Mais il n'y a pas plus simple ou du moins plus universelle ?
Car quand je vais uploader tout ça je serais obliger de modifier en fonction du nom de domaine ou autre.
Pas href="http://127.0.0.1/Nevrus/includes/design.css"

mais

href="/Nevrus/includes/design.css"
Klomac - Blog Lambda

Eléphant du PHP | 206 Messages

28 juin 2007, 16:32

En effet ça marche, mais "nevrus" c'ets le nom de mon dossier qui regroupe toute mes pages (car travail en local là)
Mais par la suite quand j'uploaderais sur mon serveur, il n'y aura plus le dossier nevrus .

Une modifications des pages sera donc obligatoire :?

Eléphant du PHP | 199 Messages

28 juin 2007, 19:57

Dans ce cas tu mets /includes/design.css et tu ajoutes la balise suivante dans ton <head> :

<base href="/Nevrus" />
Klomac - Blog Lambda

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

28 juin 2007, 20:46

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.

Eléphant du PHP | 199 Messages

28 juin 2007, 20:54

Oui, tant qu'à faire ;)
Klomac - Blog Lambda

ViPHP
AB
ViPHP | 5818 Messages

28 juin 2007, 21:04

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
Heu.. tu ne voulais pas dire "Et quand je mets le site sur le serveur de prod, il n'y a qu'a modifier ce fichier de config, et ça roule" ?

J'utilise le même principe + également pour mes connexions bdd :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

28 juin 2007, 21:51

Heu.. tu ne voulais pas dire "Et quand je mets le site sur le serveur de prod, il n'y a qu'a modifier ce fichier de config, et ça roule" ?
Non je voulais dire que je copie tout sauf le fichier de config. Si j'envoie le fichier de config avec le reste, forcément il faut le remodifier pour le serveur donc c'est idiot autant ne pas l'inclure :) c'était juste ça que je précisais.

ViPHP
AB
ViPHP | 5818 Messages

28 juin 2007, 23:50

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
Ah oui, j'ai compris pourquoi je n'avais pas saisi tout de suite ta réponse. Comme Snipy ne connaissait peut-être pas cette méthode, je me suis mis à sa place et à la suite de l'étape de la création des fichiers de config, j'attendais : "Seuls ces fichiers sont donc différents en local et sur le serveur distant".

Oula, je me mets à raisonner comme un script, et je bug car je ne comprends plus les sous-entendus :? Faudra que je me remette un peu au piano pour faire fonctionner la touche humanisation :lol:

Eléphant du PHP | 206 Messages

29 juin 2007, 14:53

J'ai pour habitude dans toutes mes applications web de définir dans un fichier de config global :
- le chemin vers la racine du site
- l'url du site

Et quand je mets à jour le site sur le serveur de prod ce fichier de config n'est pas modifié, et ça roule.
ok !

Tu le stock dans une simple variable ou tu utilises ce que disais Klomac
<base href="/Nevrus" />