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 :

Impossible de faire un include


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 207
    Points : 41
    Points
    41
    Par défaut Impossible de faire un include
    Bonsoir all,
    je teste en vain de faire un include ou d'ajouter directement mon code dans un dossier et ça n'affiche rien de rien donc j'ai testé de mettre directement le code mais la encore y a un souci quand je mais le code toute la partie du bas s'efface.

    donc je vous explique en plus claire :p

    a la racine de mon site (vote.php) et les fichiers qui va avec (ip.txt, data.txt, admin.php et config.php)

    a la racine de mon site j'ai créer index.php qui include droit.php et gauche.php qui sont les colonnes droite et gauche de mon site.

    Ce qui nous intéresse c'est droit.php car il contient soit mon code soit mon include, avec le code ou le include tout fonctionne correctement si les fichiers se trouvent a la racine de mon site.

    maintenant quand je l'include dans le dossier partenaire/index.php ou dans jeux/index.php la rien ne s'affiche et aucune erreur a part ma colonne qui s'efface et laisse juste la partie du haut.

    j'ai testé plusieurs façons mais il veut rien savoir

    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
     
    Code 1
    <?
    include ("http://www.lien.org/vote.php");
    ?>
     
    Code 2
    <?
    $a = file_get_contents("http://www.lien.org/vote.php");
    echo ($a);
    ?>
     
    Code 3
    <?
    include (vote.php);
    ?>
     
    Code 4
    <?
    require_once($_SERVER['DOCUMENT_ROOT'].'vote.php');
    ?>
    par contre avec le code dans dessous mon sondage s'affiche mais on ne peut pas voter ni voir les résultats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
    $a = file_get_contents("http://www.lien.org/vote.php");
    echo ($a);
    ?>

    Cordialement,
    Stéphane

  2. #2
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Tu n'as pas bien compris comment fonctionnait l'include ou le require.

    Quand tu es à la racine de ton site, les deux fichiers sont dans le même répertoire. Donc aucun problème.

    Par contre, lorsque tu es dans un répertoire différent, il faut que tu remontes ou descendes d'un répertoire ("../vote.php")...

    J'espère t'avoir aidé...

    Cdt,

    Mathieu

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include('vote.php');
    doit normalement fonctionner

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Include et file_get_contents sont deux choses extrêmement différentes à ne pas confondre.

    Le include sert à organiser ton code. En pratique ce qui va se passer c'est que include('monfichier.php'); va se faire remplacer, directement dans ton code, par le contenu de monfichier.php (d'ailleurs, tu devrais plutôt utiliser include_once, qui s'assure que même si tu fais l'include plusieurs fois, il ne sera pris en compte qu'une seule fois).
    Le include se fait "avant" que ton code php soit exécuté. De fait, le contenu du fichier est exécuté de la même manière que si tu faisais un copier/coller du contenu du fichier inclu, directement à l'endroit de ton inclusion.

    file_get_contents par contre sert pendant l'exécution à aller lire un fichier pour réaliser un traitement dessus. Avec ton echo par exemple, le traitement réalisé est un affichage, pas une exécution.

    Typiquement, si tu as un index.php qui fait appel à d'autres fichiers php, c'est include_once qu'il faut utiliser. Si tu veux lire un fichier (pour récupérer le résultat de tes votes par exemple ?), tu utilise file_get_contents.

    Ensuite, mettre des url en chemin, ce n'est pas terrible, avec certaines fonctions, sur un malentendu et parce que php est sympa, il n'est pas impossible que ca marche (genre ton file_get_content), n'empêche que c'est crade pour un tas de bonne raison (si tu le demandes gentiment, je veux bien t'expliquer, sinon, crois-moi sur parole ^^). Non, ce qu'il faut faire, c'est comme l'a suggéré mathieu44800, utiliser les chemins relatifs.
    Pour remonter d'un répertoire par rapport à ton répertoire actuel : ../nomfichier
    pour aller dans un dossier : nomdudossier/nomfichier
    Et si tu es dans le même répertoire : nomdufichier.

    Donc tu devrais avoir des includes qui ont une tête comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include_once('vote.php'); 
    include_once('../lerepertoiredacote/fichier.php');
    Dernier point, utilise les balises <?php ?> et pas <? ?>, sinon, au moment de la mise en ligne de ton site chez un hébergeur professionnel, il y a une chance sur deux pour qu'il te jette, le <? ?> n'est pas "à la norme".
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    A noter que, si ta configuration PHP t'y autorise (désactivé par défaut il me semble), tu peux faire des include d'URLs. Cependant, c'est généralement considéré comme une faille de sécurité car tu ouvre volontairement un fenêtre vers l'intérieur de ton application, si tu ne contrôles pas ce qui provient de cette url, tu peux aller au devant de bien moches surprises.

    Petit rappel, la syntaxe correcte pour la directive include est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    include "filename.php"; // .php3 .phtml .inc sont généralement tolérés.
    Voir http://php.net/manual/en/function.include.php

    A noter: include raise un E_WARNING si le fichier est introuvable, require quand à lui emet un E_FATAL et balance l'appli dans les orties.
    A noter: include_once et require_once évitent que les fichiers soient chargés plus d'une fois, très pratique pour les libraires ou autres...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 207
    Points : 41
    Points
    41
    Par défaut
    Bonjour a tous,
    merci de votre aide et mes excuse de ne pas avoir répondu plus tot car des souci de boite mail ^^.

    donc j'ai suivie un peut tout vos conseil mais y a vraiment rien a faire sois rien ne s'affiche sois les menus qui se trouve en dessous du sondage disparer j'ai pourtant testé tout sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php include_once('../vote.php'); ?>
    <?php include_once('vote.php'); ?>
    <?php include "vote.php"; ?>
    <?php include "vote.php"; ?>
    <?php include "../vote.php"; ?>
    <?php include('vote.php'); ?>
    <?php include('../vote.php'); ?>
    <?php include('http://www.tchat-fusion.org/vote.php'); ?>
    etc...
    Cordialement stéphane

  7. #7
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Je pense que le mieux pour toi est de commencer par faire un exercice à part pour comprendre comment ca marche.

    Dans un nouveau répertoire, crée ces trois fichiers :


    inc1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
       echo ('Dans inc1.php <br />');
    ?>
    inc2.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
       echo ('Dans inc2.php <br />');
    ?>
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
       include_once('inc1.php');
       echo ('La, on est dans le index.php.<br />');
       include_once('inc2.php');
       include_once('inc2.php');
    ?>
    Là, tu as un code minimal. Que fait-il ?
    A partir de là, tu peux jouer un peu, du genre retirer le include_once('inc2.php'); de l'index et le mettre dans inc1.php
    Tu peux aussi t'amuser à créer des répertoires, déplacer le fichier inc1.php et trouver comment faire l'include pour que ca continue de se passer correctement.

    C'est pas grand chose, limite ca peut sembler idiot, mais une fois que tu auras bien compris ca, revient sur ton problème actuel, avec un peu de bol, soit ca se débloquera tout seul, soit tu pourras éliminer ce problème là et cerner, pourquoi pas, d'autres soucis.

    ps : pour les notations.
    include_once('mon_fichier.php'); est équivalent à include_once 'mon_fichier.php'; par contre, include_once(mon_fichier.php); (sans quote ou guillemets) même s'il fonctionne probablement (php est gentil) si tu n'as pas activé les warning, est une notation fausse.
    Rakken

    Oneira, un monde imaginaire d'Heroic Fantasy.

    Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 207
    Points : 41
    Points
    41
    Par défaut
    Bonsoir Rakken,
    je fait suite a se message :
    Rakken
    Là, tu as un code minimal. Que fait-il ?
    j'ai mis les 3 fichiers dans un dossier nomé test ici lein

    quand je vais sur la page lien y marquer sa :

    Dans inc1.php
    La, on est dans le index.php.
    Dans inc2.php

    donc vue que les 3 fichiers son dans le même dossier sa fonctionne.

    par contre quand je mais se code dans le dossier (partenaire/links.php) lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
       include_once('vote.php');
       echo ('La, on est dans le index.php.<br />');
       include_once('../vote.php');
    ?>
    sa m'affiche le echo (La, on est dans le index.php.)
    mais tout mes menu qui se trouve en dessous il disparré

    Cordialement Stéphane

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    maintenant quand je l'include dans le dossier partenaire/index.php ou dans jeux/index.php la rien ne s'affiche et aucune erreur a part ma colonne qui s'efface et laisse juste la partie du haut.
    Je ne suis pas certain d'avoir bien compris le problème, mais à mon avis ton problème serait lié à l'arborescence (complexe) que tu as adopté.

    Au lieu de mettre les pages dans des répertoires comme :
    www/index.php
    www/partenaire/index.php
    www/jeux/index.php

    Il serait mieux à mon sens de procéder ainsi, de tout mettre à la racine (www) :
    www/index.php
    www/partenaire.php
    www/jeux.php
    www/vote.php
    ... etc ...

    Ensuite, de mettre les contenu dans les répertoire : (pure exemple)
    www/partenaire/link.php
    www/jeux/link.php
    www/css/style.css
    www/js/style.css
    www/images/logo.jpg
    ... etc ...

    Au final, on effectue les inclusion à partir de la racine, donc plus de souci de chemin :
    Pour partenaire.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // On inclus les liens
    include('partenaire/link.php');
    Pour jeux.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // On inclus les liens
    include('jeux/link.php');
    Pour vote.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // On inclus les liens
    include('partenaire/link.php');
    include('jeux/link.php');
    De plus, et donc le fait que les pages soient à la racine, c'est théoriquement plus simple de gérer les truc comme Css, Javascript, les images, etc ...
    En gros : tout est à la racine, et on recherche tous les contenus (php, css, js, image, etc ...) dans les répertoires structurés, classés comme il faut.
    Et surtout, on évite les includes dans un include, et encore dans un include, etc ... on s'y perd à la longue.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  10. #10
    Membre confirmé Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Points : 547
    Points
    547
    Par défaut
    Salut,

    À mon sens plus propre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    // Affichage des erreurs : E_ALL en développement | 0 en prodution
    error_reporting(E_ALL);
     
    // Définition d'une constante
    define ('ROOTPATH', $_SERVER['DOCUMENT_ROOT']);
     
    include_once(ROOTPATH.'/test/1/index.php'); // inclusion du fichier /test/1/index.php 
    echo '<hr/>index.php<hr/>';
    include_once(ROOTPATH.'/test/2/index.php'); // inclusion du fichier /test/2/index.php
    ?>
    Et ce code est valable pour tous les fichiers de l'arborescence.

    ++

Discussions similaires

  1. Shell - faire un include
    Par LFC dans le forum Linux
    Réponses: 4
    Dernier message: 02/01/2011, 21h43
  2. [TP7] Impossible de faire tourner un programme
    Par eleve88 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 10/01/2006, 19h12
  3. Réponses: 2
    Dernier message: 14/12/2005, 22h57
  4. Impossible de faire marcher SESSIONS_PER_USER
    Par jack554 dans le forum Oracle
    Réponses: 7
    Dernier message: 05/01/2005, 11h50
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

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