IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème chemin avec include


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Problème chemin avec include
    Bonjour à tous,

    Je viens de me mettre à construire un site, et voilà qu'un problème sans doute tout bête vient de me stopper net. Je n'arrive pas à gérer les chemins d'accès lorsque que je fait des include.

    Alors avant tout de chose je travaille avec Wamp Server 2.2 et voici une partie de mon arborescence depuis le dossier 'www' de Wamp

    DOSSIER "syk"
    -> index.php
    -> styles.css
    -> html5-ie.js
    -> date_heure.php
    -> date_heure.js
    -> DOSSIER "Base"
    -> base_header.html
    -> base_aside.html
    -> base_footer.php
    -> DOSSIER "Inscription"
    -> formulaire.php

    Bon maintenant le souci.

    Voici le body de index.php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <body>
    		<?php include("/Base/base_header.html"); ?>
    		<?php include("/Base/base_aside.html"); ?>
    		<div id="content">			
    			<?php include("/Main/main_window.html"); ?>
    		</div>
    		<?php include("/Base/base_footer.php"); ?>
     
    </body>
    Dans le footer.php on trouve le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <footer>
    	<?php 
    		/*echo $_SERVER['DOCUMENT_ROOT'];*/
    		include("/date_heure.php");
    	?>
     
    	<p class="haut_page">
    		<a href="">Haut de page</a>
    	</p>
    </footer>
    Jusque là tout fonctionne à merveille. Cependant dans le fichier formulaire.php ( qui se trouve donc dans le dossier Inscription ) j'aimerais à nouveau inclure les fichiers base_header.html, footer.php ( et donc date_heure.php ). Et c'est là que ça coince.

    Voici le body de formulaire.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <body>
    		<?php include("/Base/base_header.html"); ?>
    		<div id="content">	
    			<form method="post" action="../Connexion/validation.php">
    		<fieldset>
    			<legend> Votre Identité ? </legend>
    			<label for="identifiant">Identifiant :</label>
    			<input type="text" name="pseudo" size="20" maxlength="40" id="identifiant" />
    			<label for="mdp">Mot de passe :</label>
    			<input type="password" name="mdp" size="20" maxlength="40" id="motdepasse" />
    			<label for="mdp">Confirmation du Mot de passe :</label>
    			<input type="password" name="mdp" size="20" maxlength="40" id="motdepasse" />
    		</fieldset>
     
    	</form>
    		</div>
    		<?php include("/Base/base_footer.php"); ?>
     
    	</body>
    Les messages d'erreur sont les suivants pour la page formulaire.php :

    Warning: include(/Base/base_header.html): failed to open stream: No such file or directory in C:\Users\Session Travail\Documents\Program Files\wamp\www\syk\Inscription\formulaire.php on line 20

    Warning: include(/Base/base_footer.php): failed to open stream: No such file or directory in C:\Users\Session Travail\Documents\Program Files\wamp\www\syk\Inscription\formulaire.php on line 35
    Je peux toujours mettre un chemin relatif dans les include du formulaire.php, mais j'aimerais bien comprendre le fonctionnement des chemins absolus car dans le fichier footer.php le include doit être utilisé avec un chemin absolu sinon la date ne s'affichera que dans index.php OU formulaire.php

    Bon j'espère que je me suis bien exprimé, et que vous avez compris le problème que je rencontre

    Merci d'avance à tous !

  2. #2
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include("../Base/base_header.html"); ?>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Bonjour FirePrawn,

    J'avais en effet utilisé cette ligne de code en attendant de comprendre comment faire autrement en chemin absolu.
    Mais le problème reste avec le include dans le base_footer.php.

    En résumé j'appelle deux fois via include le fichier base_footer.php dans lequel on a le code suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <footer>
    	<?php 
    		/*echo $_SERVER['DOCUMENT_ROOT'];*/
    		include("/date_heure.php");
    	?>
     
    	<p class="haut_page">
    		<a href="">Haut de page</a>
    	</p>
    </footer>
    J'appelle donc base_footer.php une fois dans le index.php et une fois dans le formulaire.php.
    Le problème est que le include du fichier base_footer.php ne fonctionne que dans le cas où base_footer.php est appelé par index.php.

  4. #4
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Et bien mets le lien du include vers date_heure.php en chemin absolu

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    En fait pour résumé.

    Lorsque la page principale de mon site s'affiche ( index.php ), je trouve bien dans le footer le résultat du fichier date_heure.php. Résultat qui est : "Nous sommes le ... et il est ..."

    Sur la page principale je clique sur le lien "S'inscrire" qui m'envoie sur la page formulaire.php et là dans le footer pas de message indiquant l'heure et la date mais un message d'erreur :

    Warning: include(/date_heure.php): failed to open stream: No such file or directory in C:\Users\Session Travail\Documents\Program Files\wamp\www\syk\Base\base_footer.php on line 4

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Voilà c'est ce que je cherche à faire mais je n'y arrive pas ^^.

  7. #7
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Comment ça tu n'y arrives pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("C:/Users/Session Travail/Documents/Program Files/wamp/www/syk/date_heure.php");

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Plus de message d'erreur c'est bon mais si rien ne n'affiche pour le moment. J'avais déjà essayé ça mais j'avais sûrement dû faire une faute de frappe pour que le message d'erreur ne s'enlève pas. C'est pas glorieux je sais

    Par contre n'y a-t-il pas un moyen pour ne pas avoir à réécrire C:/Users:...../www à chaque fois que l'on veut écrire un chemin absolu ?? Et que doit-on privilégier, les chemins relatifs ou absolus ??

    Merci pour les réponses.

  9. #9
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Tu peux utiliser dirname(__FILE__) mais dans ton cas tu auras le même problème étant donné que ça récupère le path du fichier dans lequel tu trouves

    Pour les préférences je ne sais pas, personnellement j'ai toujours préféré les chemins relatifs, ça permet de ne pas avoir d'erreur si pour une raison quelconque on déplace les fichiers.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    D'accord, je garde quand même dirname(__FILE__) dans un coin de ma tête pour utilisation ultérieure.

    Bon dernière chose du même esprit et j'arrête de vous embêter. La date et l'heure ne s'affiche pas dans la page du formulaire car il faut aussi une adresse absolue. Le contenu du fichier date_heure.php avant modification est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <script type="text/javascript" src="./date_heure.js"></script>
     
    <p class="date_et_heure">
    	<span id="date_heure"></span> 
    	<script type="text/javascript">window.onload = date_heure('date_heure');</script>
     
    </p>
    J'ai essayé de mettre un chemin absolu pour cela fonctionne à tous les coups :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <script type="text/javascript" src="C:/Users/Session Travail/Documents/Program Files/wamp/www/syk/date_heure.js"></script>
    Résultat pas de message d'erreur mais rien qui s'affiche que ce soit dans la page principale ou dans la page du formulaire.

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    pour éviter ce genre de problèmes, il est préférable d'utiliser un bootstrap.php situé à la racine du site et appelé au début de chaque traitement. Dedans tu définis une constante globale qui stocke le chemin vers la racine de ton site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('GCT_DIR_ROOT', __DIR__.DIRECTORY_SEPARATOR);
    ensuite pour tes inclusions : c'est du gâteau vu que tu pars toujours de la racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include GCT_DIR_ROOT.'Base/base_header.html';
    Pour le .js, tu ne peux pas mettre le chemin à partir de la racine de ton disque dur. Dans la mesure où cela sort dans le navigateur un C:/Users/Session Travail/Documents/Program Files/wamp/www/syk/date_heure.js n'a aucun sens pour une page web.
    Tu dois te contenter de /syk/date_heure.js avec ou sans le 1er slash.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Parfait cela fonctionne à merveille et c'est exactement ce que je cherchais.

    Merci à rawsrc et FirePrawn pour vos précieuses réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème espace avec include
    Par gforce dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2006, 13h50
  2. problème avec include
    Par Sebastien_INR59 dans le forum Langage
    Réponses: 8
    Dernier message: 21/03/2006, 16h05
  3. [VBS]Problème de chemin avec les " " (espace)
    Par pierre1256 dans le forum VBScript
    Réponses: 3
    Dernier message: 16/02/2006, 18h53
  4. probléme avec include() via HTTP
    Par schlitters dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2006, 17h19
  5. problèmes avec "include file" pour une page asp
    Par chipsense dans le forum ASP
    Réponses: 1
    Dernier message: 02/09/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo