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

AJAX Discussion :

[AJAX] [PHP] Chemin d'inclusion dans un script appelé en Ajax


Sujet :

AJAX

  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut [AJAX] [PHP] Chemin d'inclusion dans un script appelé en Ajax
    Bonjour,
    j'imagine que ce problème est récurrent mais je ne trouve rien à ce sujet sur le forum. Voici la structure de mes fichiers :

    root/classes/ -> mysqlrecord.class.php
    root/site/classes/ -> catconfig.class.php
    root/site/inc/ -> ajax.php
    root/site -> index.php
    dans index.php j'appelle inc/ajax.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST", "inc/ajax.php", true);

    dans ajax.php :
    je fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once('../classes/catconfig.class.php');
    Et là j'ai un problème "d'endroit de l'inclusion". Dans ma classe catconfig j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once("../classes/mysqlrecord.class.php");

    Ca fonctionne nickel sans passer en Ajax mais via la page ajax.php j'ai le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: require_once(../classes/mysqlrecord.class.php) [function.require-once]: failed to open stream: No such file or directory in etc.
    Voilà si quelqu'un a une solution ou une piste
    Merci d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("../../classes/mysqlrecord.class.php");
    A+

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Merci mais le problème est plus complexe.
    Si je fais ça ça marchera dans mon fichier ajax.php mais pas si je veux utiliser ma classe dans un autre script.
    La seule solution que je vois pour l'instant c'est de définir une variable $path que je modifierais selon l'endroit de l'inclusion.

    [edit] d'ailleurs je m'aperçois que ce problème n'a rien à voir avec Ajax, mais juste avec l'endroit dans l'arborescence où l'on inclut une classe. Il a fallu que je passe par Ajax pour m'aperçevoir de ce phénomène de php...

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    Si je fais ça ça marchera dans mon fichier ajax.php mais pas si je veux utiliser ma classe dans un autre script.
    Si tu ne le fais pas le chemin est faux.
    C'est d'ailleurs clairement le sens de ton message d'erreur ...

    Rien de complexe, non

    Et bien sûr, le fichier doit être inclus pour chaque page qui doit l'utiliser.
    Alors vue l'arborescence de tes fichiers, il faut adapter suivant les cas.

    A+

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pourquoi ne pas passer par une URL absolue ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    E.Bzz, je crois que t'as pas vu ce que je voulais dire
    Si je veux utiliser la classe CatConfig dans ajax.php je suis obligé de définir ce chemin dans catconfig.class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("../../classes/mysqlrecord.class.php");
    mais si je veux l'utiliser dans index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require_once("../classes/mysqlrecord.class.php");
    et j'utilise cette classe sur les 2 pages citées donc il faut soit que j'utilise une variable $path par exemple, soit effectivement que j'utilise une url absolue. Ce qui est dommage avec l'url absolue c'est qu'en local ou en distant l'arbo est parfois différente (souvent dans mon cas). Sinon faudrait que j'utilise $_SERVER['DOCUMENT_ROOT'] ou un truc du style. Merci pour vos réponse

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require_once("http://localhost/classes/mysqlrecord.class.php");
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  8. #8
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    A moins que je ne me plante, je ne pense pas que cet exemple fonctionne car un include en http te retourne le code déjà interprété (faudra que je tente quand même ). L'autre problème est celui que j'évoquais, t'es obligé de coder en dur l'url du site (nom de domaine, etc.) donc ta version locale et différente de ta version distante.
    (En fait je pourrais aussi modifier l'include_path dans la config, ca doit être ce qui reste le plus simple)

    [edit] Il me semble qu'un include() distant se comporte finalement comme un file_get_content() distant.

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Djakisback Voir le message
    E.Bzz, je crois que t'as pas vu ce que je voulais dire
    Si si

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Un include interprète toujours le code
    Ensuite, en localhost, tu n'as pas à te soucier du domaine...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Ok, merci bien je vais tenter tout ça

  12. #12
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Bon c'est bien ce que je pensais il faut que l'hébergeur soit en > 4.3 et que allow_url_include = on. D'autre part, ça m'épaterait que tu puisses définir une url qui fonctionne chez un hébergeur mutualisé vu que t'as souvent des chemins genre opt/var/etc. ET en local.
    Enfin il me semble qu'un include n'est pas interprété, il est parsé est inclus dans le script qui lui est interprété. En fait la différence est que quand tu fais un include distant en http comment veux-tu pouvoir parser la source alors que le serveur distant interprète les .php ? Tu ne peux récupérer que la sortie HTML non ?
    Enfin bon tout ça pour dire qu'il me semble que les meilleures solutions sont de rester en relatif et d'utiliser un $classPath ou de modifier l'inlcude_path.

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ou de remonter ton ajax.php dans le répertoire site
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Ah oui effectivement, merci

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

Discussions similaires

  1. [AJAX - PHP] Lancer des requêtes dans une boucle
    Par Psycadi dans le forum AJAX
    Réponses: 12
    Dernier message: 01/07/2010, 16h05
  2. Variable "chemin du fichier" dans un script?
    Par snayksql dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 06/05/2010, 19h08
  3. Réponses: 7
    Dernier message: 30/01/2008, 18h24
  4. [AJAX] Du JS dans un script chargé en AJAX ?
    Par dorian53 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/04/2007, 12h18
  5. [PHP-JS] fonction javascript dans un script PHP
    Par guy2004 dans le forum Langage
    Réponses: 7
    Dernier message: 19/11/2006, 17h50

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