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 :

Include dans controleur Ajax


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Include dans controleur Ajax
    Bonjour,

    Voila mon problème, certaines pages de mon site incluent une classe DAO (modele/dao/classeDAO.php) cette même classe inclut sa classe métier (modele/dto/classeMetier.php) et la classe de connexion à la base (modele/dao/dao.php) qui elle-même inclut les paramètres de connexions (configs/param.php).
    Ces pages qui incluent la classe DAO utilisent un chemin relatif, le problème vient lorsque je tente de faire de l'Ajax.

    En effet dans mon contrôleur Ajax (controleur/controleurAjax/controleurAjax.php) j'inclut également une classe DAO. Sauf que comme cette classe DAO fait des includes avec des chemins relatifs (../modele/dao/dao.php) , j'ai une erreur lorsque je lance controleurAjax.php. Logique, puisque le path n'est pas le même.

    Comment pourrai-je régler mon problème ? J'ai essayé en précédant mon chemin de 'http://localhost/monSite/' mais comme ma classe DAO (exemple: UserDAO) hérite de DAO (du fichier dao.php) j'ai une erreur qui me dit que la classe 'DAO' n'a pas été trouvée.

  2. #2
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    faut créer une constante qui sera l'emplacement de la racine de ton projet en valeur absolue de ton projet (ex: define("ROOT_PATH", "/home/www/monprojet/");

    Et pour chaque include que tu fera, tu utilisera cette constante. (ex : include ROOT_PATH."modele/dao/classeDAO.php") en partant du principe que modele est un répertoire présent à la racine du projet.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Ok, merci beaucoup pour ta réponse je vais tester ça.
    Si j'utilise wamp, je dois remplacer "home par "wamp" je suppose.

  4. #4
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    J'utilise ça sous linux pour définir l'emplacement de mon projet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define('ROOT_PATH', str_replace('\\', '/',dirname(__FILE__)).'/');
    A vérifier sous Windows.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Ta solution ne résoud pas mon problème d'Ajax.

    J'ai ma classe UserDAO qui se trouve dans /modele/dao/userDAO.php qui hérite de la classe DAO déclarée dans modele/dao/dao.php et qui utilise des paramètres de connexion situés dans /configs/param.php. De plus, UserDAO inclut sa classe métier dans /modele/dto/user.php.

    Dans mon script JS, lorsque je fais open() de mon controleur Ajax dans /controleur/controleurAjax/afficherUsers.php ce dernier ne trouve pas le chemin de dao.php , param.php et user.php. Normal, puisque le chemin pour ces fichiers a été configuré pour que d'AUTRES PAGES puisse les trouver via UserDAO.

    Donc la déclaration de la constante ne change pas mon problème, je sais pas si mon problème est plus clair désormais

  6. #6
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Si la constante est connu de la page /controleur/controleurAjax/afficherUsers.php
    Alors pour appeler les scripts dao.php , param.php et user.php tu utilises ROOT_PATH.'chemin/nom.php';

    Je comprend pas en quoi ça ne fonctionnerai pas.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2017
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Où suis-je supposer définir ma constante ? En la placant dans mon header, il ne la trouve pas et en la placant dans userDAO.php la constante me donne le chemin "C:\wamp\www\localhost\projet\modele\dao"

  8. #8
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    La constante doit être placée dans un fichier qui sera OBLIGATOIREMENT incluse dans toutes tes pages, genre un fichier de config BDD ou autre.

Discussions similaires

  1. [CKEditor] Impossible de placer un include dans la source
    Par metatron dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 09/08/2006, 16h04
  2. [WSAD]Modification d'un include dans les jsp
    Par milton dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 31/03/2006, 15h01
  3. [Mail] Mettre un include dans une variable
    Par Death83 dans le forum Langage
    Réponses: 16
    Dernier message: 04/03/2006, 20h01
  4. [Référencement] Gestion des "includes" dans Google
    Par odelayen dans le forum Référencement
    Réponses: 5
    Dernier message: 20/04/2005, 17h07
  5. include dans un VBS ?
    Par rodolphedj dans le forum ASP
    Réponses: 20
    Dernier message: 16/12/2004, 22h57

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