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 :

[POO] énigme au niveau des inclusions


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut [POO] énigme au niveau des inclusions
    Hello !
    je sais manipuler les include depuis longtemps.
    J'ai un soucis particulier :
    Vu que j'utilise beaucoup de dossiers dans le site, pour me simplifier la navigation j'ai collé une variable $url dans une session qui retourne l'url racine du site.
    Pour mes css si je passe
    href="<?php echo $url.'CSS/_main.css'; ?>"
    ça marche au poil !( CSS étant le nom du dossier qui contient mes css.

    Génial, je me dis, j'en fait autant pour include !
    <?php include $url.'fonctions/fonctions_main.php'; ?>
    Aucun message d'erreur, OK !
    Plus bas j'appelle une fonction contenue dans le fichier fonctions_main.php
    <?php
    function br()
    { echo'<br>'; }
    appelée ainsi : <?php br(); ?>
    C'est simple ! !
    Ben erreur Call to undefined function !
    Je pige pas !
    Si je fais un echo du contenu de include (je suis en local)
    j'affiche
    127.0.0.1/intermediaire_z/fonctions/fonctions_main.php
    (j'ai volontairement viré le http:// pour éviter de créer un lien dans le post)
    Pour l'instant je démarre le site, je suis sur index.php

    Pourquoi ça ne veut pas marcher ??

    Merci

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Salut
    peut etre que l'include de fichier distant est desactivé ?
    sinon tu peux également déclarer une variable chemin qui contient le chemin physique et tu utilise cette variable pour l'inclusion.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Merci !
    l'include de fichier distant est desactivé ?
    Je ne pense pas, j'ai la même chose sur le serveur.
    Je vais bien trouver une astuce.
    En fait mon problème : je gère mal la navigation !
    Si je suis dans le dossier 1
    je ne sais pas aller dans le dossier 2
    ni retourner à la racine !
    Pourtant j'ai des heures de vol, mais je n'ai pas eu l'occasion d'utiliser.

    Quelle serait la bonne fonction pour recupérer l'url complète de la racine
    genre monsite.fr/index.php
    Je la mets en variable session.
    C'est à cause du travail en local et les verif sur serveur => ce sera automatique !

    Au fait, comment faire :
    je suis dans le dossier 1
    mes CSS sont dans le dossier 2
    Comment appeler ma CSS ???

    Je refais un site assez copieux où tout est en vrac dans la racine (sauf images, swf.... en dossier).

    Le site va faire au moins 40 fichiers ! !
    Si je ne ventile pas en dossiers, c'est la pagaille.
    => gestion immobilières, les annonces sont sur Mysql.

  4. #4
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    personnellement, quand je suis dans ton cas, je définis une variable pour la localisation des CSS, des images, des fichiers JS.
    Et pour mes fichiers je redéfinis le include_path dans ma fonction init.
    comme ca, je fais un include est cela est geré tout seul.

    Apres pour récupérer l'emplacer j'utiliser $_SERVER. Comme ca, je n'ai pas besoin de saisir manuellement l'url du site.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Sorry, là je patauge ! (fatigué !)
    Tu peux me fournir un exemple développé ?
    Je passe des heures sur Google, je n'en peux plus !
    Ce serait super sympa de me faire gagner 3 heures de recherche !

  6. #6
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    La j'ai pas le code.
    Mais de tetes je dirais :
    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
    21
    22
    23
    24
    25
    26
     
    <?php
     
     
    var_dump($_SERVER);
    $url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
    define ("URL_CSS",$url_de_base . "CSS/");
    define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
     
     
    // appelle d'une image
    ?>
    <img src="<?php echo URL_IMG?>titi.jpg" />
     
    <?
    define ("SEPARATOR",":"); // : pour unix ; pour windows
    $chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
     
    ini_set('include_path',ini_get('include_path').SEPARATOR
    . $chemin_de_base . "module1" . SEPARATOR
    . $chemin_de_base . "module2"
    );  
     
     
    include ("mon_fichier.php"); //
    ?>
    enfin voici dans les grandes lignes.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    MERCI ! !

    Je teste et je reviens !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Usine à gaz !
    J'avoue que mes connaissances...

    Concrètement
    chemin css = CSS/_main.css
    chemin fonctions = fonctions/fonctions.php

    J'abuse (tu peux me jeter je comprendrai !)
    script pour appeler ma feuille de style (dans n'importe quel dossier) ?
    script pour include fonstions.php (dans n'importe quel dossier) ?

    Après, je ferme le PC pour 3 jours !
    Je suis sur ce truc depuis hier soir (avec 4H de sommeil ! !)

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Bah
    dans mon application, je faisais toujours l'inclusion d'un fichier de configuration. Donc c'est ce fichier qui gérer ca. Donc oui, ces modifications étaient accessibles dans toute l'application.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Concrètement
    chemin css = CSS/_main.css
    chemin fonctions = fonctions/fonctions.php
    oui c'est comme ca, sauf que pour le css tu dois rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <link rel="stylesheet" type="text/css" media="screen"
                 href="<?php echo CSS;?>_main.css" />
    Usine à gaz !
    J'avoue que mes connaissances...
    C'est ma solution que tu trouves lourdes ou c'est ton application ?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Mon application tourne déjà, mais c'est le foutoir !
    Le client ne savait pas où il allait, pas de cahier des charges !
    j'ai donc fait des modifs au fur et à mesure.
    Le site fonctionne, mais je ne veux pas garder un tel script
    Bonjour les modifs à venir la dedans...
    pour info la maquette est là => intermediaire.info/1

    Je ne critique pas ton script ! !
    Je ne le comprends pas, mes connaissances en PHP sont limitées.
    Je n'utilise que des choses simples, pas le temps de bosser plus loin dans l'immédiat.
    Autodidacte (54 ans !)

    Ton script me retourne au moins 30 lignes d'erreur.
    Ce que viens de m'indiquer ne marchera pas si je suis dans un dossier, je pense.
    Vais essayer...

    Tu peux laisser tomber, je vais décrocher, je suis à plat.
    Merci de ta patience.

    J'ai une roue de secours pour bosser en local et sur serveur
    if $ip= 127.0.0.1 => j'applique une url
    else URL du serveur.

    Merci encore, je ne ferme pas le post (j'ai une alerte mail)

    Rappel pour être clair :
    ce que je veux faire, c'est simplifier la navigation et pouvoir accéder à mes feuilles css contenues dans le dossier CSS à dans n'importe quel fichier
    Idem pour inclure des fonctions (dans le dossier "fonction")
    dans n'importe quel dossier.
    exemple le fichier index dans le dossier admin. (ccs et fonctions ? ?)

    Je compte utiliser une variable de session pour passer l'url racine.
    J'ai réussi pour l'appel css, pas pour include !

    Merci encore

    Ma devise :
    quand on a mesuré l'étendue de ce qu'il nous reste à apprendre, on parle moins de ce que l'on croit savoir !

  11. #11
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    ok, bon les erreurs je pense que c'est normal vu que j'ai écrit le script de tête. Mais sinon je vais essayer de donner l'exemple un peu plus détaillé.

    Donc j'ai un fichier conf.php, il est situé à la racine (par exemple).
    le fichier est à peu pres celui-ci :
    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
    21
    22
    23
    24
    25
     
    <?php
     
    session_start(); // comme ca pas besoin de le faire ailleurs
     
    //définition des variables pour les css et les images
    $url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
    define ("URL_CSS",$url_de_base . "CSS/");
    define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
     
    // definition du chemin pour les includes
    define ("SEPARATOR",":"); // : pour unix ; pour windows
    $chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
     
    // include_path défini les chemins ou apache/php va chercher tes scripts
    // en supposant que ton application soit structuré en 
    // deux dossiers modules et classes tu as le code suivant
    ini_set('include_path',ini_get('include_path').SEPARATOR
    . $chemin_de_base . "modules" . SEPARATOR
    . $chemin_de_base . "classes"
    );  
     
    // apres tu définir ici tes élements de connexions a la bd ou autres
     
    ?>
    Ce fichier est à inclure au début de chacune de tes pages.
    Apres dans un fichier qui serait situé dans modules/test tu pourrais avoir le fichier suivant
    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
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    // surtout pas d'espace avant la ligne d'au dessus pour faire fonctionner le session_start
    include("../../conf.php"); // pour insérer le fichier précédent
    ?>
    <html>
    <head>
    	<title>ma page de test</title>
    	<!-- pour insérer le fichier css -->
    	<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_CSS;?>_main.css" />
     
     
    </head>
    <body>
    	<?php
    	include("ma_class_test.php"); // disons que la classe est dans le dossiers class
    	$maclasse = new test();
    	echo $maclasse->toString();
     
    	include("mes_fonctions_mails.php");
    	if (verifie_mail(aaa@aaa.com)) { echo "ok";}
    	else { echo "raté;"}
    	?>
    	affichons une image
    	<img src="<?php echo URL_IMG;?>mon_image.png" alt="mon image"/>
    </body>
    </html>
    en espérant que cela t'aide un peu plus.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Quelle patience et quelles compétences !

    disons que la classe est dans le dossiers class
    quelle classe ?
    Je me sens de plus en plus nul !
    Après je recopie, j'étudierai plus tard, je ne vois plus clair !

  13. #13
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    bah en fait vu que je ne connais pas la structure de ton projet, j'en ai juste proposée une pour l'exemple. Je parlais de classes, au cas ou tu aurais utilisé de la POO dans le projet.
    Si tu as juste des fichiers de fonctions ignore ce morceau et interesse toi plus a la suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    include("ma_class_test.php"); // disons que la classe est dans le dossiers class
    $maclasse = new test();
    echo $maclasse->toString();
    Apres les compétences ca vient tout seul, je me suis formé aussi sur le tas, mais il y a trois ans.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Vraiment trop cool !

    Index.php (racine)
    ------- Dossier CSS => contient style.css
    ------- Dossier fonctions=> contient fonctions php

    --------Dossier Admin => contient admin.php

    Dans admin.php je veux style css dans le HEAD et include fonctions.php.
    Sans me taper des chemins relatifs !

    Je testerai plus tard ! !

    Ce forum est géant !

  15. #15
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Donc a priori tu peux faire

    conf.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
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    session_start(); // comme ca pas besoin de le faire ailleurs
     
    //définition des variables pour les css et les images
    $url_de_base = "http://" . $_SERVER['SERVER_NAME'] . "/";
    define ("URL_CSS",$url_de_base . "CSS/");
    define ("URL_IMG",$url_de_base . "public/IMAGES/fr/");
     
    // definition du chemin pour les includes
    define ("SEPARATOR",":"); // : pour unix ; pour windows
    $chemin_de_base = $_SERVER['DOCUMENT_ROOT'];
     
    // include_path défini les chemins ou apache/php va chercher tes scripts
    // en supposant que ton application soit structuré en
    // deux dossiers modules et classes tu as le code suivant
    ini_set('include_path',ini_get('include_path').SEPARATOR
    . $chemin_de_base . "modules" . SEPARATOR
    . $chemin_de_base . "classes"
    );
    include ("fonctions/fonctions.php");
    ?>
    <html>
    <head>
    	<title>mon appli</title>
    	<!-- pour insérer le fichier css -->
    	<link rel="stylesheet" type="text/css" media="screen" href="<?php echo URL_CSS;?>style.css" />
    et admin.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    include("../conf.php"); // pour insérer le fichier précédent
    ?>
     
    le reste ici
    </body>
    </html>

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 349
    Points : 109
    Points
    109
    Par défaut
    Réponse tardive, fallait décrocher !
    Je voudrais te rendre hommage :
    Ta patience est exemplaire, je ne trouve ce genre d'écoute que sur ce forum, les autres ont vite fait de te jeter !
    Tu m'as mis face à mes manques : dès que j'ai un peu de temps je me remets à potasser les fonctions avancées. Tu m'en a donné l'envie !

    Finalement, j'ai potassé les chemins relatifs, et ça suffira en attendant des compétences plus appronfondies.
    Je me refuse à utiliser des script que je ne maitrise pas totalement !
    Je ne suis pas pour les solutions de facilité...

    So long man
    Merci

    Dan

  17. #17
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Il n'y a pas de problèmes.
    Si tu prefere utiliser ta propre solution, ce n'est pas plus mal. C'est comme ca que l'on progresse.

    Bon courage pour la suite.

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

Discussions similaires

  1. inclusion des fichiers au niveau des namespace
    Par t-student dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2010, 14h10
  2. [RCP] Problème au niveau des icones des executables
    Par albeau dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 23/03/2006, 16h24
  3. [POO] [AVIS] L'utilité des classes
    Par Anduriel dans le forum Langage
    Réponses: 66
    Dernier message: 10/11/2005, 16h45
  4. au niveau des smileys ...
    Par ETI-trian dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 22/10/2005, 22h47

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